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

作者 admin

百度广告效果展示