【问题标题】:Required Field Validator is not working before postback必填字段验证器在回发之前不起作用
【发布时间】:2015-05-31 14:42:00
【问题描述】:


我的问题似乎很奇怪,但我没有找到合适的解决方案。
在我的应用程序中,我有一些 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;
    }
}


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

请给我正确的解决方案。

【问题讨论】:

  • 您尝试从哪里调用 validatePage() 函数?
  • 您需要在提交按钮上将 CauseValidation 属性设置为 true,这意味着页面需要在发布到服务器之前进行验证。
  • 即使我将 CauseValidation 设置为 True,它也不起作用......我正在调用 validatePage() 函数 OnClientClick 事件。但是没有用。
  • 查看您的保存按钮,我看不到您在哪里调用 OnClientClick 事件,我希望看到类似 OnClientClick="if (Page_ClientValidate() == false) return(false); "
  • 不,@Bayeni 即使将 OnClientClick 事件放在按钮中,它也无法正常工作。

标签: javascript c# jquery asp.net validation


【解决方案1】:

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

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

一般来说,如果您不尝试提交页面,则仅应将此设置为 false,例如,如果您有一个 Save 函数可以保存部分完成的表单,或者如果您使用 &lt;asp:UpdatePanel&gt; 来异步检索数据

【讨论】:

  • 这是 5 分钟前在 cmets 下建议的 :)
  • 没错,但我还没看到就开始打字了
  • @Bayeni - 在这种情况下,您可以将其发布为答案;)
【解决方案2】:

让下面2个办法:

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多