我的问题似乎很奇怪,但我找不到合适的解决办法
在我的应用程序中,我有一些asp文本框,也需要字段验证器。除此之外,我还有一个按钮。
我的目的是在表单提交之前执行页面验证。但是当我点击按钮时,requiredfieldvalidator没有显示任何错误。相反,页面正在提交给服务器。
以下是我的aspx页码:
<asp:TextBox runat="server" ID="txtPhysicalTherapyTherapist1" CssClass="txt-field"></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 runat="server" ID="txtPhysicalTherapyFrequency1" CssClass="txt-field"></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:
function validatePage() {
if (Page_ClientValidate()) {
alert("Valid Page");
return true;
}
else {
alert("Not a valid Page");
return false;
}
}
但是当我点击按钮保持我的文本框为空时,它会将表单提交给服务器。
请为我提供适当的解决方案。
答案 0 :(得分:2)
您的按钮有CausesValidation="false"
,这将阻止对表单进行任何验证。尝试将其设置为CausesValidation="true"
或者你可以完全删除它,因为它应该默认为true。
一般来说,如果您没有尝试提交页面,则只应将此设置为false,例如,如果您有Save
函数可以保存部分填写的表单,或者您使用的是{{ 1}}以异步方式检索数据
答案 1 :(得分:1)
让以下两种方法:
第一种方法:使用javascript触发验证,以下代码工作
<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事件中,在处理数据之前进行以下操作
Page.Validate("PhysTherapyAdd");
if(!Page.IsValid) return;