前言:jQuery.validator是一款非常不错的表单验证插件,验证方式非常简单方便,它还对HTML5做了兼容处理,了解了验证规则,就基本掌握了它的使用,下面就让我一一道来 jQuery.validator 验证规则

一、在元素的class属性中添加需要验证的规则,多个规则以空格隔开

<label>邮箱:</label>
<input class="required email" type="text" name="email">
required:        // 必填
email: // 邮箱地址
url: // url地址
date: // 日期
dateISO: // ISO格式的日期(2014/08/27 或 2014-08-27)
number: // 数字(负数,正数,小数,整数)
digits: // 正整数
creditcard: // 信用卡

二、将要验证的规则作为元素的属性

<label for="userName">用户名:</label>
<input name="userName" id="userName" required remote="ajax requestUrl"> <label for="password1">密码:</label>
<input type="password" name="password1" id="password1" required rangelength="6,12"> <label for="password2">请再次输入密码:</label>
<input type="password" name="password2" id="password2" required equalTo="#password1">
required:        // 必填
email: // 邮箱地址
url: // url地址
date: // 日期
dateISO: // ISO格式的日期(2014/08/27 或 2014-08-27)
number: // 数字(负数,正数,小数,整数)
digits: // 正整数
creditcard: // 信用卡 // 注意,在元素上将规则作为元素的属性,除了 required ,以上规则都需要赋值,如:<input type="text" id="email" name="email" email="true"> minlength: // 输入字符最小长度(中文算一个字符)
maxlength: // 输入字符最大长度(中文算一个字符)
rangelength: // 输入字符最小,最大长度(中文算一个字符)
min: // 数值最小值
max: // 数值最大值
range: // 数值最小,最大值
equalTo: // 再次输入相同的值
remote: // 发送ajax请求验证(常用案例就是在注册时,验证用户名是否存在),
// 注:请求返回的 response === true || response === 'true',才算验证通过,这需要后端的配合

jQuery.validator内部做了很多处理,下面写法都是可以的

<input type="password" name="password1" id="password1" required rangelength="6,12">
<input type="password" name="password1" id="password1" required="" rangelength="6, 12">
<input type="password" name="password1" id="password1" required rangelength="6 12">
<input type="password" name="password1" id="password1" required="true" rangelength="[6,12]">

同时还支持HTML5的type属性,如:

<input type="url" name="url" required>
<input type="number" name="number" required>
<input type="email" name="email" required>

注意:不支持 type="range" 的 input 控件,这是因为需要比较最大,最小值,而不只是简单的正则验证

三、使用jQuery.fn.data设置验证规则

<input type="text" name="userName">
$('[name="userName"]').data({
'ruleRequired': true,
'ruleRangelength': [4, 10],
'ruleRemote': 'ajax requestUrl'
});

注意:下面写法是不会生效的,因为元素属性都是小写字母,大写字母都会转换为小写

<input type="text" name="userName" data-ruleRequired="true" data-ruleRangelength="4,10" data-ruleRemote="">

四、在配置对象中,传递要验证的规则

<form id="validForm">
<input type="text" name="userName">
<input type="text" name="email"> <input type="submit" value="提交">
</form>
$('#validForm').validate({
// 每一个name值对应一组规则
userName: {
required: true,
rangelength: [4,10],
remote: '' // ajax请求地址
},
email: {
required: true,
email: true
}
});

五、自定义验证规则

使用 $.validator.addMethod( name, method, message ), 便可以添加自定义规则
如:我要自定义一条验证手机号码的规则:

$.validator.addMethod('mobile', function( value, element ){

    // /^1\d{10}$/ 来自支付宝的正则
return this.optional( element ) || /^1\d{10}$/.test( value ); }, '请输入正确的手机号码');

六、其他( 处理频繁请求ajax的操作 )

情景1:关注与取消关注,这种需求需要处理连续 多个ajax请求的关系

我之前的处理是上一个ajax请求完毕了,才去响应用户的下一次单击操作,即再次发送ajax请求

情景2:jQuery.validator源码中的例子

如果验证规则是 remote ,发送ajax请求验证,由于插件在keyUp事件中会触发验证,那么当keyUp频繁的触发,ajax就会请求很多很多次啦,这就涉及到处理连续多个ajax请求的问题,
即:上一次ajax请求还没完成,紧接着又发送ajax请求,这样是不是有点凌乱呢,jQuery.validator是这样做的,将上一次未响应的ajax请求中断,这样只会在最后一次keyUp事件中发送ajax验证

比较:想想情景1的例子,第二种处理方式更好,因为情景1的处理,可能会在最后一次单击事件无响应,不会触发ajax请求,造成用户体验不好,这是因为在最后一次单击事件中,上一次ajax请求还未完成(响应)

PS:
jQuery.validator有四种为表单控件添加验证规则的方式,其内部实现是按 class, attribute, jQuery.fn.data, 配置对象依次叠加的,后面途径添加的规则会覆盖前面添加的规则;
如果有多个表单控件的name属性值相同(属性值包含''),除第一个表单控件会验证,后面name属性值相同的表单控件验证将会忽略;

本篇只是研究jQuery.validator的验证规则,其他的放在后面讲述,如果你觉得本文对你有用,请竖起你的大拇指,转载请注明出处:博客园 华子yjh ,谢谢!

jQuery.validator 验证规则详解的更多相关文章

  1. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  2. 【转】jQuery Validate验证框架详解

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  3. jQuery Validate验证框架详解(jquery.validate.min.js)

    原博客 jQuery Validate验证框架详解 jQuery校验官网地址:https://jqueryvalidation.org/ 一.导入js库 <script type="t ...

  4. jQuery Validate验证框架详解(转)

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  5. jQuery Validate验证框架详解,提交前验证

    现在都用h5表单进行验证了,以下方式仅做回忆 https://www.runoob.com/jquery/jquery-plugin-validate.html <!DOCTYPE HTML P ...

  6. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性

    atitit.jQuery Validate验证框架详解与ati Validate 设计新特性 1. AtiValidate的目标1 2. 默的认校验规则1 2.1. 使用方式 1.metadata用 ...

  7. jQuery.Validate验证库详解

    一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...

  8. yii2中的rules 自定义验证规则详解

    yii2的一个强大之处之一就是他的Form组件,既方便又安全.有些小伙伴感觉用yii一段时间了,好嘛,除了比tp"难懂"好像啥都没有. 领导安排搞一个注册的功能,这家伙刷刷刷的又是 ...

  9. 触碰jQuery:AJAX异步详解

    触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...

随机推荐

  1. 【poj1733】 Parity game

    http://poj.org/problem?id=1733 (题目链接) 题意 一个由0,1组成的序列,每次给出一段区间的奇偶,问哪一条信息不合法. Solution 并查集. 题目中序列的长度有很 ...

  2. 在网页上添加QQ消息代码

    进入:http://shang.qq.com/v3/widget.html 复制代码 到网页

  3. Codeforces Round #389 Div.2 C. Santa Claus and Robot

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  4. Zabbix邮件报警-->Email

    Version:3.0.1 邮件报警有两种media 1.Email zabbix发送报警邮件到指定smtp服务器(使用系统自带的sendmail,发送邮箱是zabbix服务器的本地邮箱账号) 再由s ...

  5. MATLAB for循环优化三例

    最近一周,对MATLAB有进行了新一轮的学习,对其矩阵化编程的思维有了更深入的了解.确实精妙! 例1: 将矩阵A= [1 2 3; 2 4 3; 3 4 5]中所有的数字3替换为33. 如果还停留在C ...

  6. SLF4J的好处

    原来我们使用log4j去打印日志,如果我们要更改日志记录器,比如用comms-Logging,那我们在代码里面还要改每个类的引用包,但是如果用slf4j的话只要在配置的时候改下,代码完全用slf4j的 ...

  7. MVC-12 ActionMethodSelectorAttribute

    ActionMethodSelectorAttribute 其实微软对方法的起名都比较规范和通俗易懂的,从名字上来看就知道这是方法选择器 我们在action上加上 HttpGet.HttpPost . ...

  8. 《Linux菜鸟入门2》Ldap

    ldap网络帐号1.ldap是什么ldap目录服务认证,和windows活动目录类似,就是记录数据的一种方式 2.ldap客户端所需软件yum install sssd krb-workstation ...

  9. linux下samba的安装与使用

    samba挺好用的,配置项不多,正好适合我这种懒人使用. 下面是CentOS上面的安装与使用方法. 安装:yum -y install samba        安装一个名字叫samba的软件,安装过 ...

  10. POJ2239 Selecting Courses(二分图最大匹配)

    题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 #include <iostream ...