这个jQuery插件简化了客户端表单验证,同时还提供了大量的自定义选项。 如果您从头开始构搭建,且尝试将某些内容集成到具有大量现有标记的现有应用程序时,它也是一个不错的选择。 该插件捆绑了一组有用的验证方法,包括URL和电子邮件验证,同时提供API来编写自己的方法。 所有捆绑方法都带有英语的默认错误消息,并翻译成其他37种语言。
该插件最初是由JQuery团队的成员JörnZaefferer编写和维护的,他是jQuery UI团队的首席开发人员和QUnit的维护者。 它始于2006年jQuery的早期阶段,并从那时起进行了更新和改进。
从版本1.15.0开始,Markus Staab于2016年2月接管了代码库的维护。自2016年7月起,Brahim Arkni协助Markus,几个月后,Brahim加入了jQuery Validation核心团队。
当前版本:1.19.0
License: MIT
要求
jquery,用1.7.2、1.8.3、1.9.1、1.11.1、3.1.1进行测试
验证您之前从未验证过的表单!
"But doesn't jQuery make it easy to write your own validation plugin?"
当然,但仍有许多细微之处需要注意:您需要一个标准的验证方法库(例如电子邮件,URL,信用卡号)。您需要在DOM中放置错误消息,并在适当时显示和隐藏它们。你想要的不仅仅是提交事件,比如keyup和blur。
根据您在不同项目中使用的服务器端环境,您可能需要不同的方法来指定验证规则。毕竟,你不想重新发明轮子,对吗?
“但是那里已经没有大量的验证插件吗?”
是的,有很多非基于jQuery的解决方案(自从你找到jQuery后就可以避免)和一些基于jQuery的解决方案。这个特别的插件是最古老的jQuery插件之一(始于2006年7月),并在世界各地的项目中证明了自己。还有一篇文章讨论了这个插件如何符合应该验证的解决方案。
不相信?看看这个例子:
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<legend>Please provide your name, email address (won't be published) and a comment</legend>
<p>
<label for="cname">Name (required, at least 2 characters)</label>
<input id="cname" name="name" minlength="2" type="text" required>
</p>
<p>
<label for="cemail">E-Mail (required)</label>
<input id="cemail" type="email" name="email" required>
</p>
<p>
<label for="curl">URL (optional)</label>
<input id="curl" type="url" name="url">
</p>
<p>
<label for="ccomment">Your comment (required)</label>
<textarea id="ccomment" name="comment" required></textarea>
</p>
<p>
<input class="submit" type="submit" value="Submit">
</p>
</fieldset>
</form>
<script>
$("#commentForm").validate();
</script>
这不是那么好吗?
单行jQuery选择表单并应用验证插件,并在每个元素上添加一些注释以指定验证规则。
当然,这不是指定规则的唯一方法。您也不必依赖这些默认消息,但在首次为表单设置验证时它们会派上用场。
在进行这个演示时需要注意的一些事项
在尝试提交无效表单后,第一个无效元素被聚焦,允许用户更正该字段。如果另一个无效字段(不是第一个字段)在提交之前被重点关注,那么该字段将被聚焦,允许用户在他或她更喜欢的情况下从底部开始。
在字段被标记为无效之前,验证是惰性的:在第一次提交表单之前,用户可以在不显示恼人消息的情况下通过字段进行选项卡 - 在有机会实际输入正确值之前,它们不会被窃听
一旦字段被标记为无效,它就会得到即刻的验证:一旦用户输入了必填的正确值,就会移除错误消息
如果用户在非标记字段中输入内容,并且标签/点击远离它(模糊字段),则会进行验证 - 显然用户有意输入内容,但未能输入正确的值
当点击验证插件的演示时,这种行为可能会令人恼火 - 它专为不显眼的用户体验而设计,尽可能少地使用不必要的错误消息让用户烦恼。
在整个文档中,经常使用两个术语,因此在验证插件的上下文中了解它们的含义非常重要:
这个库添加了三个jQuery插件方法,主要入口点是validate方法:
Custom selectors
该库还使用三个自定义选择器扩展了jQuery:
Validator
validate方法返回一个Validator对象,该对象具有一些可用于以编程方式触发验证或更改表单内容的公共方法。 验证器对象有更多方法,但只有这里记录的方法可供使用。
还如如下几个静态方法:
提供如下标准的验证方法:
还有一些方法作为附件提供,目前包含在下载包中的additional-methods.js中。 并非所有这些都记录在这里:
可以使用$ .validator.methodsproperty重新定义内置规则的实现。
When you have a name attribute like user[name], make sure to put the name in quotes. More details in the General Guidelines.
Another common problem occurs with this code:
1 2 3 4 5 6 7 8 |
|
This results in a too-much-recursion error: $(form).submit()
triggers another round of validation, resulting in another call to submitHandler, and voila, recursion. Replace that with form.submit(), which triggers the native submit event instead and not the validation.
So the correct code looks slightly different:
1 2 3 4 5 |
|
Based on an old version of the marketo.com sign-up form. The custom validation was once replaced with this plugin. Thanks to Glen Lipka for contributing it!
Notable features of the demo:
The sign-up form from rememberthemilk.com (based on an older version). The custom validation was replaced using this plugin. Thanks to RTM for contributing!
Notable features of the demo:
Contributed by Michael Evangelista, showing a multipart form for buying and selling houses.
Notable features of the demo:
Features remote validation for helping the user to fill out captchas.
Notable features of the demo: