【问题标题】:How to trigger ASP.NET client-side validations without submit?如何在不提交的情况下触发 ASP.NET 客户端验证?
【发布时间】:2011-01-17 18:29:26
【问题描述】:

我有一个 ASP.NET 网站(WebForms,NOT MVC),其中有一个调查表,分为几张幻灯片。每张幻灯片都有一个下一张按钮,显然会转换(客户端,不是回发或远程请求)到下一张幻灯片。

在每张幻灯片中,我都有几个 ASP.NET 控件及其相关的验证器。我希望当我点击下一个按钮(或者每个输入失去焦点时?)时触发这个验证器。

我记得 ASP.NET 在失去焦点时进行客户端验证,但也许我错了......(我退出 ASP.NET 开发大约 3 年了,所以我不记得了)

谢谢

更新:

当相关控件失去焦点时,最好让 ASP.NET 触发每个验证器。我记得 ASP.NET 是这样做的(还是我在做梦?=P)

【问题讨论】:

  • 你使用什么样的验证器??
  • 常见的。必需的字段验证器、范围验证、一些正则表达式......但大部分都是必需的。
  • 如果你使用 jQuery 中的.val(),那么你也必须调用.change()。喜欢$("#thing").val(''); $("#thing").change();

标签: asp.net webforms client-side-validation lost-focus


【解决方案1】:

首先,您需要确保所有验证器都具有使用验证器上的“TargetControlID”属性指定的目标控件。

然后您可以为每个页面设置一个验证组,并在您的下一个按钮和控件本身中指定组名称。

如果您使用正则表达式验证器,您可以从 this website 中选择它们

验证客户端 如果您使用自定义验证器,您可以创建客户端函数并使用 ClientValidationFunction 属性在自定义验证器上指定它,并在自定义验证器上设置 EnableclientScript = "true"。

请确保您的客户端函数具有 sender 和 args 参数。

【讨论】:

  • 问题是“下一个”按钮并不是一个真正的按钮,而是一个执行一些 javascript 以转换到下一张幻灯片的链接。不回发,也不涉及远程请求。
  • 如何使用 onchange() javascript 方法?还是 onblur()?
  • 你可以在文本框上使用这些方法。
【解决方案2】:

似乎提供了一个名为 Page_ClientValidate 的 JavaScript 函数,应该可以调用该函数以从 JavaScript 手动检查验证。不过我没用过,所以YMMV。

【讨论】:

    【解决方案3】:

    将所有客户端验证器放入同一个验证组,并使用“下一步”按钮添加相同的验证组。当您单击按钮时,它将在回发之前自动触发所有验证器。

    关于手动触发验证... 您也许还可以使用 ValidatorOnSubmit()。我记得在另一个项目中这样做过,但我很难找到代码。

    【讨论】:

    • 问题是“下一个”按钮并不是一个真正的按钮,而是一个执行一些 javascript 以转换到下一张幻灯片的链接。不回发,也不涉及远程请求。
    【解决方案4】:

    似乎每当我尝试离开该字段时,在每个验证器上启用“SetFocusOnError”都会触发验证。

    【讨论】:

      【解决方案5】:

      简而言之,装饰您的模型,现在 Asp.Net 4.5 支持数据注释 在这里查看我的答案..Client side webform validations

      【讨论】:

        猜你喜欢
        • 2021-01-12
        • 2017-11-01
        • 2023-03-21
        • 2021-01-15
        • 1970-01-01
        • 2014-05-11
        • 2019-09-21
        • 1970-01-01
        • 2017-05-20
        相关资源
        最近更新 更多