关于javascript:必填字段验证程序在回发之前不起作用

Required Field Validator is not working before postback

我的问题似乎很奇怪,但是我没有找到合适的解决方案。
在我的应用程序中,我有一些asp文本框和必需的字段验证器。除此之外,我还有一个按钮。我的目的是在提交表单之前执行页面验证。但是,当我单击按钮时,requiredfieldvalidator不会显示任何错误。而是页面正在提交到服务器。
以下是我的aspx页面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator19" runat="server" ControlToValidate="txtPhysicalTherapyTherapist1"
ErrorMessage="this is required" ForeColor="Red"
ValidationGroup="PhysTherapyAdd" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator>

</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator18" runat="server" ControlToValidate="txtPhysicalTherapyFrequency1"
ErrorMessage="Frequency is required" ForeColor="Red"
ValidationGroup="PhysTherapyAdd" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator>

<asp:Button ValidationGroup="PhysTherapyAdd" ID="btn_physicaltherapy"
runat="server" Style="width: 80px;" CssClass="tabs" CausesValidation="false" Text="Save"
OnClick="btn_physicaltherapy_Click" />

我已经按如下方式放置了本地JavaScript:

1
2
3
4
5
6
7
8
9
10
function validatePage() {
   if (Page_ClientValidate()) {
   alert("Valid Page");
    return true;
    }
    else {
    alert("Not a valid Page");
    return false;
    }
}

但是,当我单击使文本框为空的按钮时,它将向服务器提交表单。

请为我提供适当的解决方案。


您的按钮具有CausesValidation="false",这将阻止对该表单进行任何验证。尝试将其设置为CausesValidation="true"

或者您可以将其完全删除,因为它应该默认为true。

通常来说,仅在不尝试提交页面时才应将其设置为false,例如,如果您具有将保存部分填写的表单的Save函数,或者您正在使用异步检索数据


让以下两种方法:

第一种方法:使用javascript触发验证,以下代码起作用

1
2
<asp:Button ValidationGroup="PhysTherapyAdd" ID="btn_physicaltherapy"
runat="server" Style="width: 80px;" CssClass="tabs" CausesValidation="false" Text="Save" OnClick="btn_physicaltherapy_Click" OnClientClick="if (validatePage() == false) return(false);"/>

第二种方法:在btn_physicaltherapy_Click事件上使用背后的代码,然后在处理数据之前放置以下内容

1
2
Page.Validate("PhysTherapyAdd");
if(!Page.IsValid) return;