什么是 jQuery Unobtrusive 验证?

IT技术 javascript jquery asp.net asp.net-mvc validation
2021-02-19 16:40:20

我知道 jQuery 验证插件是什么。我知道 jQuery Unobtrusive Validation 库是由 Microsoft 制作的,并且包含在 ASP.NET MVC 框架中。但我找不到解释它是什么的单一在线资源。标准 jQuery 验证库和“不显眼”版本之间有什么区别?

4个回答

Brad Wilson 有几篇关于unobtrusive validationunobtrusive ajax 的很棒的文章
在这个Pluralsight 视频中的“AJAX 和 JavaScript”部分也很好地展示了它

基本上,它只是 Javascript 验证,不会用自己的验证代码污染您的代码。这是通过使用HTML 中属性来完成的data-

一些代码示例会很好。因为您的回复实际上并没有那么有用,大多数人来到这里寻找快速解决方案和代码示例,而不是文章链接,随着时间的推移,他们可能会中断,他们通常在您看到后作为参考代码示例。我更喜欢接下来的2个答案。
2021-04-21 16:40:20
谢谢@MishaMoroshko 指出这一点。我现在在 Pluralsight 上找不到任何替代品,所以我删除了链接。一有替代品,我会再次编辑帖子。
2021-04-24 16:40:20
视频链接已损坏。
2021-05-12 16:40:20
你能告诉我们在 mvc3 中对非侵入式验证所做的改进吗?
2021-05-14 16:40:20

以不显眼的方式:

  • 您不必调用 validate() 方法。
  • 您可以使用数据属性(data-val、data-val-required 等)指定需求

Jquery 验证示例

<input type="text" name="email" class="required">
<script>
        $(function () {
            $("form").validate();
        });
</script>

Jquery 验证不显眼的例子

<input type="text" name="email" data-val="true" 
data-val-required="This field is required.">  

<div class="validation-summary-valid" data-valmsg-summary="true">
    <ul><li style="display:none"></li></ul>
</div>
是的,“unobtrusive”在这里似乎是“undiscoverable”的委婉说法。
2021-05-03 16:40:20
谢谢,我正在尝试使用 Ctrl-F 在一些我必须处理的代码中找到 valdiate() 调用。想知道为什么我找不到它
2021-05-07 16:40:20

为了澄清起见,这里有一个更详细的示例,演示了使用 jQuery Validation Unobtrusive 的表单验证。

两者都在 jQuery 中使用以下 JavaScript:

  $("#commentForm").validate({
    submitHandler: function(form) {
      // some other code
      // maybe disabling submit button
      // then:
      alert("This is a valid form!");
//      form.submit();
    }
  });

这两个插件之间的主要区别是用于每种方法的属性。

jQuery 验证

只需使用以下属性:

  • 如果需要,需要设置
  • 为正确的格式设置类型(电子邮件等)
  • 设置其他属性,例如大小(最小长度等)

这是表格...

<form id="commentForm">
  <label for="form-name">Name (required, at least 2 characters)</label>
  <input id="form-name" type="text" name="form-name" class="form-control" minlength="2" required>
  <input type="submit" value="Submit">
</form>

jQuery 验证不显眼

需要以下数据属性:

  • data-msg-required="这是必需的。"
  • 数据规则要求=“真/假”

这是表格...

<form id="commentForm">
  <label for="form-x-name">Name (required, at least 2 characters)</label>
  <input id="form-x-name" type="text" name="name" minlength="2" class="form-control" data-msg-required="Name is required." data-rule-required="true">
  <input type="submit" value="Submit">
</form>

基于这些示例中的任何一个,如果所需的表单字段已填写,并且它们满足附加属性条件,则会弹出一条消息,通知所有表单字段都已验证。否则,有问题的表单字段附近会出现指示错误的文本。

参考资料: - jQuery 验证:https : //jqueryvalidation.org/documentation/

jQuery Validation Unobtrusive Native 是 ASP.Net MVC HTML 辅助扩展的集合。它们利用了 jQuery Validation 对 HTML 5 数据属性驱动的验证的本机支持。Microsoft 将 jquery.validate.unobtrusive.js 与 MVC 3 一起发布。它提供了一种使用 jQuery 验证和 HTML 5 数据属性(即“非侵入式”部分)的组合将数据模型验证应用于客户端的方法。