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