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