回发前所需的字段验证程序不起作用

Required Field Validator is not working before postback

本文关键字:字段 验证 程序 不起作用      更新时间:2023-09-26


我的问题看起来很奇怪,但我没有找到合适的解决办法
在我的应用程序中,我有一些asp文本框,还需要字段验证器。除此之外,我还有一个按钮
我的目的是在提交表单之前进行页面验证。但当我点击按钮时,所需的字段验证器没有显示任何错误。相反,页面正在提交到服务器。
以下是我的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;
    }
}


但当我点击保持文本框为空的按钮时,它会将表单提交到服务器。

请给我提供合适的解决方案。

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

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

一般来说,只有当您没有尝试提交页面时,您才应该将其设置为false,例如,如果您有一个Save函数,它将保存一个部分完成的表单,或者如果您正在使用<asp:UpdatePanel>异步检索数据

让以下两种方法:

第一种方法:使用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;