Query Validate 插件提供了强大的表单验证功能,能够让客户端表单验证变得更简单,同时它还提供了大量的可定制化选项,以满足应用程序的各种需求。该插件捆绑了一套非常有用的验证方法,包括 URL 和电子邮件验证,同时也提供了API允许用户自定义校验方法。提供的所有捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。
官网下载地址:https://github.com/jquery-validation/jquery-validation/releases
使用方式
<head> <script src="jquery.min.js"></script> <!--引入插件--> <script src="validate/jquery.validate.min.js"></script> <script src="validate/messages_zh.js"></script> </head> <body> <!--创建html表单--> <form name="dataform" id="dataform" method="get" action=""> <p> <label for="username">用户名</label> <input id="username" name="username" type="text"> </p> <p> <label for="password">密码</label> <input id="password" name="password" type="password"> </p> <p> <label for="confirm_password">验证密码</label> <input id="confirm_password" name="confirm_password" type="password"> </p> <p> <label for="email">Email</label> <input id="email" name="email" type="email"> </p> <p> <input class="submit" type="submit" value="提交"> </p> </form> <script> //插件初始化 $("#dataform").validate({ rules: { username: {required: true,minlength: 2}, password: {required: true,minlength: 5}, confirm_password: {required: true,minlength: 5,equalTo: "#password"}, email: {required: true,email: true}, }, messages: { username: { required: "请输入用户名", minlength: "用户名必需由两个字母组成" }, password: {required: "请输入密码",minlength: "密码长度不能小于 5 个字母"}, confirm_password: { required: "请输入密码", minlength: "密码长度不能小于 5 个字母", equalTo: "两次密码输入不一致" }, email: "请输入一个正确的邮箱", } }) </script> </body>
注意事项:
1. 所有需要被校验的<input>元素都必须有 name 属性,并且其取值在一个表单中必须唯一。
2. 同组的<radio>或<checkbox>元素 name 属性值相同。
3. 复杂的 name 属性在定义 rules 选项时需要使用 “” 括起来。
//示例 rules: { // 不需要使用 "" 括起来 name: "required", // 需要使用 "" 括起来 "user[email]": "email", // 需要使用 "" 括起来 "user.address.street": "required" }
验证规则
内置规则
jQuery Validate 插件支持多种内置验证规则:
序号 |
规则 |
描述 |
---|---|---|
1 |
required:true |
必须输入的字段。 |
2 |
remote:”check.php” |
使用 ajax 方法调用 check.php 验证输入值。 |
3 |
email:true |
必须输入正确格式的电子邮件。 |
4 |
url:true |
必须输入正确格式的网址。 |
5 |
date:true |
必须输入正确格式的日期。日期校验 ie6 出错,慎用。 |
6 |
dateISO:true |
必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 |
7 |
number:true |
必须输入合法的数字(负数,小数)。 |
8 |
digits:true |
必须输入整数。 |
9 |
creditcard: |
必须输入合法的信用卡号。 |
10 |
equalTo:”#field” |
输入值必须和 #field 相同。 |
11 |
accept: |
输入拥有合法后缀名的字符串(上传文件的后缀)。 |
12 |
maxlength:5 |
输入长度最多是 5 的字符串(汉字算一个字符)。 |
13 |
minlength:10 |
输入长度最小是 10 的字符串(汉字算一个字符)。 |
14 |
rangelength:[5,10] |
输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。 |
15 |
range:[5,10] |
输入值必须介于 5 和 10 之间。 |
16 |
max:5 |
输入值不能大于 5。 |
17 |
min:10 |
输入值不能小于 10。 |
自定义验证规则
$(document).ready(function () {
//使用addMethod
方法添加自定义验证规则
//验证用户名必须包含特定字符的规则
$.validator.addMethod("containsSpecialChar", function (value, element) {
return this.optional(element) || /[!@#\$%\^&\*]/.test(value);
}, "Username must contain at least one special character (!, @, #, $, %, ^, &, *)");
$("#myForm").validate({
rules: {
username: {
required: true,
containsSpecialChar: true
}
}
});
});
配置选择
jQuery Validate 插件提供了多种配置选项,可以用来定制验证行为:
- rules: 定义表单字段的验证规则。
- messages: 自定义验证失败时的错误消息。
- errorElement: 指定错误消息的HTML元素(如
'label'
或'div'
)。 - errorClass: 指定错误消息的CSS类。
- validClass: 指定验证通过时的CSS类。
- errorPlacement: 自定义错误消息的位置。
- submitHandler: 自定义表单提交处理程序。
异步验证
使用 ajax 方式进行验证,默认会提交当前验证的值到远程地址,如果需要提交其他的值,可以使用 data 选项。
remote: { //后台处理程序 url: "check-email.php", //数据发送方式 type: "post", //接受数据格式 dataType: "json", //要传递的数据 data: { username: function() { return $("#username").val(); } } } // 注:远程地址只能输出 "true" 或 "false",不能有其他输出。
提交配置
1、用其他方式替代默认的 SUBMIT
<script> $().ready(function() { $("#signupForm").validate({ submitHandler:function(form){ alert("提交事件!"); /**此处添加ajax数据**/ // form.submit(); //默认表单提交方式 } }); }); </script>
2、只验证不提交表单 – debug
debug:true,那么表单不会提交,只进行检查,调试时十分方便。
<script> $("#dataform").validate({ debug:true }); </script>
3、更改错误信息显示的位置
<script> $("#signupForm").validate({ errorPlacement: function(error, element) { error.appendTo(element.parent()); } }); </script>
4、ajax提交
submitHandler:function(form){ var data = $(form).serializeArray(); var param = {form_submit:'ok'}; $.each(data, function(i, v){ param[v.name] = v.value; }) $.ajax({ url: '<?php echo ymmHomeUrl('sell/form'); ?>', data: param, dataType: "json", type:'post', success: function (result) { console.log(result) } }) return false; }
5、重置表单
<script> var validator = $("#signupForm").validate({ submitHandler:function(form){ alert("submitted"); form.submit(); } }); $("#reset").click(function() { validator.resetForm(); }); </script>
7、常见报错
jquery.validate.min.js:4 Uncaught TypeError: Cannot read property ‘getAttribute’ of undefined
该异常是因为某个需要校验的标签中未添加name属性导致
jQuery Validate提供了中文信息提示包,位于下载包的 dist/localization/messages_zh.js