【问题标题】:ASP.NET: How to "reset" validation after calling Page_ClientValidateASP.NET:调用 Page_ClientValidate 后如何“重置”验证
【发布时间】:2011-01-04 18:22:39
【问题描述】:

我有一个带有 jQ​​uery 对话框的 ASP.NET 页面,显示该对话框以更改一些数据。我正在设置 jQuery 对话框,这样当用户单击 OK 按钮时,它会调用 ASP.NET 的

Page_ClientValidate('validationGroup') 通过 javascript,找到所有无效控件并更改其 CSS 类。场景如下:用户打开对话框,输入一些无效数据,单击确定(接收验证消息),然后单击取消。

现在对话框已关闭,但验证消息仍然存在,因此当他们再次打开对话框时,数据会恢复到最初的方式,但表单仍处于无效状态(验证消息仍在显示)。

我需要的是在调用Page_ClientValidate('validationGroup') 之后调用的各种“重置”功能。这存在吗?

【问题讨论】:

标签: asp.net javascript validation jquery-dialog


【解决方案1】:
  1. 为您的验证器提供顺序 ID,例如验证器 1、验证器 2 等。

  2. 运行以下 javascript 代码以隐藏错误消息:

    var n = 0;
    var z = '';
    
    for (var i = 0; i < Page_Validators.length; i++) {
        n += 1;
        z = 'ctl00_MainContent_validator' + n;
        document.getElementById(z).style.visibility = 'hidden';
    }
    

    这将遍历您的验证器并隐藏任何以前显示的错误消息。

  3. 当按下提交按钮时,验证器将再次执行其操作并再次显示错误消息以显示任何失败的验证。

瞧。

【讨论】:

    【解决方案2】:

    您可以调用客户端函数ValidatorValidate(validatorObj) 来强制验证在特定验证器上再次触发。如果您将表单值重置(清除)为验证器所期望的默认值,然后在它们上触发 ValidatorValidate 函数,您应该没问题。见documentation here

    【讨论】:

    • 感谢您的帮助,尼古拉斯。非常感谢。
    【解决方案3】:

    为什么不在对话框中的输入周围放置 a from 并使用重置按钮取消

    <input type="reset" value="Cancel" />
    

    编辑

    如果您的对话框控件已重置,请在打开对话框时重新验证。

    【讨论】:

      【解决方案4】:

      当用户单击取消时,为什么不直接删除验证消息?

      【讨论】:

      • 我想我可以,但似乎应该有一个重置功能。如果我要在用户单击取消时删除消息,我将不得不在我想再次验证时将它们添加回来,这比我想要的要复杂得多。不过,我想在这一点上,这是我的后备解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      相关资源
      最近更新 更多