【问题标题】:Required Field Validator incorrectly failing validation on disabled textbox必填字段验证器在禁用的文本框上错误地验证失败
【发布时间】:2009-10-07 13:07:23
【问题描述】:

当关联的文本框被禁用时(无论文本框是否包含文本),必填字段验证器似乎总是会触发。

启用文本框后,验证器的行为正确。

谁能告诉我为什么?

我尝试使用 ValidatorEnable 禁用必填字段验证器,但这似乎没有任何区别。

这是页面中的相关 HTML(删减):

    <tr id="trBrokerNetID" runat="server">
    <td>
        <cc1:mitextbox id="txtBrokerNetID" runat="server" cssclass="bodytext" width="220px" maxlength="20" onBlur="JavaScript:CheckBrokerBranch(false);"></cc1:mitextbox>
        <asp:requiredfieldvalidator id="rfvBrokerNetID" runat="server" width="1px" errormessage="BrokerNetID - Please supply a value" controltovalidate="txtBrokerNetID">*</asp:requiredfieldvalidator>
    </td>
</tr>

感谢您的任何想法。

【问题讨论】:

  • 为了简洁起见,我强烈建议您编辑您的问题。尝试将问题放在顶部,然后是下面的详细信息。人们更容易快速查看他们是否可以回答您的问题。
  • 好点...猜猜这意味着您无法回答问题;o>

标签: javascript jquery requiredfieldvalidator


【解决方案1】:

现在我不知道的是,当在客户端禁用控件时它不会包含在回发中。

这就是服务器端验证触发的原因。就它而言,控件是空的。

解决方案是使用 readOnly 属性而不是 disabled 属性。

现在要弄清楚如何设置控件的样式以使其具有与禁用时相同的外观

【讨论】:

    【解决方案2】:

    ASP.NET 的验证器以神秘的方式工作:D

    首先,使用 ASP.NET 控件的 id 在 jQuery 中访问它是很危险的。 如果您将控件放在转发器中或将页面包装在母版页中,则 html 元素的 id 将与您指定的 id 不同。改为使用类来访问元素。

    如果 ASP.NET 验证器希望启用该字段,那么您必须尝试另一种方法。 我的建议是这样的:

    1。 向文本框添加一个类,使其看起来被禁用:

    $("#txtBrokerNetID").addClass("thisClassMakesItLookDisabled");
    

    2。 向文本框添加一个检查焦点并在有焦点时将其模糊的事件:

    $("#txtBrokerNetID").focus(function() {
      $(this).blur();
    });
    

    现在该字段的行为就像它被禁用并且验证器工作一样。

    【讨论】:

    • 控件正在考虑使用“我是只读但未禁用诚实”的方法,但不确定如何继续。谢谢你,我试试看
    【解决方案3】:

    您可以选择一个选项,即设置一个ValidationGroup,而不是表单使用的那个,然后在验证表单时调用Page_ClientValidate('text_validation_group')(如果需要)。这样客户验证就不会妨碍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多