详解jquery validate实现表单验证 (正则表达式)


Posted in Javascript onJanuary 18, 2017

一、目的

为了更好地实现人机交互,使用jQuery封装库中的validate插件,在用户填写表单时,可以快速地对用户填写的数据进行验证,并做出反馈。

二、validate插件简介  

validate()是插件的核心方法,定义了基本的校验规则和一些有用的配置项。

  • rule:设置表单的验证规则;
  • messages:设置表单不符合验证规则的提示信息;
  • debug:如果这个参数为true,那么表单还会提交,只进行检查,调试时十分方便。

required:必填

minlength:最小长度

maxlength:最大长度

rangelength:长度范围,以数组呈现[2,10],表示表单输入长度为2到10位

remote:可以通过发现GET或者POST请求进行远程验证,与Ajax的验证进行比较。就是通过ajax实现的

    url:
    type:默认为GET请求
    data:发送的数据

发送GET请求例子:

check:{
          required:true,
          remote:{
            url:"__CONTROLLER__/check?check="+$("#icode").val
            //__CONTROLLER__表示当前控制器
          }
        }

基本的校验规则

序号 规则 描述
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。

validator对象

  • validator.form()验证表单是否有效,返回true或者false;
  • validator.element(element)验证表单中某个元素是否有效,返回true或者false;
  • validator.resetForm()把表单恢复到验证前原来的状态;
  • validator.showErrors(error)针对元素显示特定的错误信息;
  • validator.numberOfInvalids()返回无效的元素数量;

validator对象的静态方法

  • jQuery.validator.addMethod()增加自定义的验证方法;  (即$.validator.addMethod())
  • jQuery.validator.format()格式化字符串,用参数代替模板中的{n};
  • jQuery.validator.setDefaults()修改插件默认设计;
  • jQuery.validator.addClassRules()为某些包含名为name的class增加组合验证类型。
$.validator.addClassRules({
  txt:{
    required:true,
    rangelength:[2,10]
  }
})//这时class="txt"的类都具备了这个两个验证规则

获取表单元素的验证规则:

$("#username").rules();

为表单元素添加验证规则: 

$("#username").rules('add',rules);

为表单元素删除验证规则:

$("#username").rules('remove',rules);

三、正则表达式

常用正则表达式:

用户名的正则表达式验证:/^[\w\u4e00-\u9fa5]{2,10}/g(含汉字)

用户名验证:/^\w{2,10}$/(不含汉字,只允许英文字母、数字和下画线,长度为2-10位)

QQ号验证:/^[1,9][0,9]{4,19}$/(第一位数字不为0,5-19位数字)

邮箱验证:/^[a-z0-9]+@([a-z0-9]+\.)+[a-z]{2,4}$/i(不区分大小写)

密码验证:/^\w{6,16}$/(只允许6-16位英文字母、数字和下画线)

手机号验证:/^1[3,5,7,8]\d{9}$/

URL验证:/^http:\/\/[a-z\d-]+(\w\/)+)$/i

$(document).ready(function(){ 
  $("#table").validate({ 
    rules:{ 
      admin_name:{ 
        required:true, 
        checkName:true, 
      }, 
      name:{ 
        required:true,          
      }, 
      admin_pwd:{ 
        required:true, 
        checkPwd:true, 
      }, 
      con_pwd:{ 
        required:true, 
        equalTo:admin_pwd, 
      }, 
      email:{ 
        required:true, 
        checkEmail:true, 
      }, 
      qq:{ 
        required:true, 
        checkQQ:true, 
      }, 
      s_page:{ 
        url:true, 
         
      }, 
      check:{ 
        //required:true, 
        //remote:{ 
          //url:"__CONTROLLER__/check?check="+$("#icode").val, 
          //__CONTROLLER__表示当前控制器 
          //dataType:"json", 
        //} 
      } 
    }, 
    messages:{ 
      admin_name:{ 
        required:"*必填!", 
        rangelength:"*长度为2到10位!", 
      }, 
      name:{ 
        required:"*必填!", 
      }, 
      admin_pwd:{ 
        required:"*必填!", 
        rangelength:"*长度为6到16位!", 
      }, 
      con_pwd:{ 
        required:"*必填!", 
        equalTo:"*两次输入的密码不一致!" 
      }, 
      email:{ 
        required:"*必填!", 
        email:"*请输入正确的邮箱!", 
      }, 
      qq:{ 
        required:"*必填!", 
      }, 
      s_page:{ 
        url:"*请输入正确的网页地址!", 
      }, 
      check:{ 
        required:"*必填!", 
        remote:"*验证码有误!", 
      }, 
    }, 
    //是否在获取焦点时验证 
    //onfocusout:false, 
    //是否在敲击键盘时验证 
    //onkeyup:false, 
    //提交表单后,(第一个)未通过验证的表单获得焦点 
    focusInvalid:true, 
    //当未通过验证的元素获得焦点时,移除错误提示 
    focusCleanup:true, 
  }); 
   
  //自定义正则表达示验证方法 
  $.validator.addMethod("checkQQ",function(value,element,params){ 
      var checkQQ = /^[1-9][0-9]{4,19}$/; 
      return this.optional(element)||(checkQQ.test(value)); 
    },"*请输入正确的QQ号码!"); 
     
  $.validator.addMethod("checkEmail",function(value,element,params){ 
      var checkEmail = /^[a-z0-9]+@([a-z0-9]+\.)+[a-z]{2,4}$/i; 
      return this.optional(element)||(checkEmail.test(value)); 
    },"*请输入正确的邮箱!"); 
     
  $.validator.addMethod("checkName",function(value,element,params){ 
      var checkName = /^\w{2,10}$/g; 
      return this.optional(element)||(checkName.test(value)); 
    },"*只允许2-10位英文字母、数字或者下画线!"); 
   
  $.validator.addMethod("checkPwd",function(value,element,params){ 
      var checkPwd = /^\w{6,16}$/g; 
      return this.optional(element)||(checkPwd.test(value)); 
    },"*只允许6-16位英文字母、数字或者下画线!"); 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
Angularjs基础知识及示例汇总
Jan 22 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
详解JS对象封装的常用方式
Dec 30 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
Vue项目开发常见问题和解决方案总结
Sep 11 Javascript
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
原生js实现中奖信息无间隙滚动效果
Jan 18 #Javascript
js实现简单的网页换肤效果
Jan 18 #Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
Jan 18 #Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 #Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 #Javascript
js实现消息滚动效果
Jan 18 #Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 #Javascript
You might like
php下封装较好的数字分页方法
2010/11/23 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
python实现ip查询示例
2014/03/26 Python
python批量同步web服务器代码核心程序
2014/09/01 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python守护线程用法实例
2017/06/23 Python
Python引用计数操作示例
2018/08/23 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python deque模块简单使用代码实例
2020/03/12 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
python中pow函数用法及功能说明
2020/12/04 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
工程力学专业毕业生求职信
2013/10/06 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
python异常中else的实例用法
2021/06/15 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers