给jquery的validate插件增加自定义方法

jquery的validate插件的确挺好用,唯一一点不好的就是它自带的验证规则太少了,项目中经常需要用到的 文件后缀判断(例如相片上传的时候),中文字符判断,邮编验证,电话验证,手机号码验证等,都没有,去官网看了看,e文太差,没看明白,搜了搜,实验了一下,还挺好用,所以记下来,备着防止以后用,

验证中的js规则都属于网上收集的,非本人原创,不用找我来要版权什么的,

Java代码 复制代码
  1. //ip验证   
  2. jQuery.validator.addMethod("ip", function(value, element) {         
  3.     return this.optional(element) || (/^(/d+)/.(/d+)/.(/d+)/.(/d+)$/.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));         
  4.   }, "Please enter a valid ip address.");         
  5.   
  6. // 增加只能是字母和数字的验证         
  7.   jQuery.validator.addMethod("chrnum", function(value, element) {         
  8.     return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));         
  9.   }, "只能输入数字、字母或者它们的组合");         
  10.      
  11. // 自定义验证规则——对电话号码进行验证       
  12. $.validator.addMethod("phone",function(value, element){            
  13.    // “//(?0/d{2,3}[) -]?/d{7,8}/”匹配电话号码的格式多种:010-82839278、(010)82839278、01082839278等,但是,这样有一个问题         
  14.    // 如:(01082839278这样的也会匹配。当然可以用分支条件"|"解决,比较麻烦。而且以什么开始或结束也没有匹配。         
  15.    // 为了简单起见,去掉有"()"的形式。匹配区号3位,则本地号8位,区号4位,则本地号7位的号码。         
  16.    var tel = /^0/d{2}[-]?/d{8}$|^0/d{3}[-]?/d{7}$/;         
  17.    return this.optional(element) || (tel.test(value));         
  18.    }, "电话号码格式不对." );        
  19.   
  20. // 手机号码验证       
  21. jQuery.validator.addMethod("mobile", function(value, element) {       
  22.   var length = value.length;       
  23.   //长度为11,以13,15,18开头的   
  24.   return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+/d{8})$/.test(value));       
  25. }, "手机号码格式不对");       
  26.      
  27. // 邮政编码验证       
  28. jQuery.validator.addMethod("zip", function(value, element) {       
  29.   var tel = /^[0-9]{6}$/;       
  30.   return this.optional(element) || (tel.test(value));       
  31. }, "邮政编码格式不对");    
  32.   
  33. //图片格式(后缀)   
  34. jQuery.validator.addMethod("photo", function(value, element) {   
  35.     //后缀jpg,gif,bmp,jpeg,允许大小写混合后缀   
  36.   var fileName =/^(([a-zA-Z]:)|(//))((//)[^///*/?/|/:<>]{1,255})+/.(([j,J][p,P][g,G])|([g,G][i,I][f,F]|([b,B][m,M][p,P])|([j,J][p,P][e,E][g,G])))$/;    
  37.   return this.optional(element) || (fileName.test(value));       
  38. }, "只允许后缀为.jpg,.bmp,.gif,jpeg的文件");  
//ip验证
jQuery.validator.addMethod("ip", function(value, element) {      
    return this.optional(element) || (/^(/d+)/.(/d+)/.(/d+)/.(/d+)$/.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));      
  }, "Please enter a valid ip address.");      

// 增加只能是字母和数字的验证      
  jQuery.validator.addMethod("chrnum", function(value, element) {      
    return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(value));      
  }, "只能输入数字、字母或者它们的组合");      
  
// 自定义验证规则——对电话号码进行验证    
$.validator.addMethod("phone",function(value, element){         
   // “//(?0/d{2,3}[) -]?/d{7,8}/”匹配电话号码的格式多种:010-82839278、(010)82839278、01082839278等,但是,这样有一个问题      
   // 如:(01082839278这样的也会匹配。当然可以用分支条件"|"解决,比较麻烦。而且以什么开始或结束也没有匹配。      
   // 为了简单起见,去掉有"()"的形式。匹配区号3位,则本地号8位,区号4位,则本地号7位的号码。      
   var tel = /^0/d{2}[-]?/d{8}$|^0/d{3}[-]?/d{7}$/;      
   return this.optional(element) || (tel.test(value));      
   }, "电话号码格式不对." );     

// 手机号码验证    
jQuery.validator.addMethod("mobile", function(value, element) {    
  var length = value.length;    
  //长度为11,以13,15,18开头的
  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+/d{8})$/.test(value));    
}, "手机号码格式不对");    
  
// 邮政编码验证    
jQuery.validator.addMethod("zip", function(value, element) {    
  var tel = /^[0-9]{6}$/;    
  return this.optional(element) || (tel.test(value));    
}, "邮政编码格式不对"); 

//图片格式(后缀)
jQuery.validator.addMethod("photo", function(value, element) {
	//后缀jpg,gif,bmp,jpeg,允许大小写混合后缀
  var fileName =/^(([a-zA-Z]:)|(//))((//)[^///*/?/|/:<>]{1,255})+/.(([j,J][p,P][g,G])|([g,G][i,I][f,F]|([b,B][m,M][p,P])|([j,J][p,P][e,E][g,G])))$/; 
  return this.optional(element) || (fileName.test(value));    
}, "只允许后缀为.jpg,.bmp,.gif,jpeg的文件");




把这个单独写到一个js里,在页面引用就可以用了,例如

Java代码 复制代码
  1. <td ><input type="file" name="photo"  class="{photo:true}"></td>   
  2.   
  3. t;input type="text" name="apply.abroadPhone" value="${(apply.abroadPhone)?if_exists}"  class="{phone:true}"/>  
 	<td ><input type="file" name="photo"  class="{photo:true}"></td>

<input type="text" name="apply.abroadPhone" value="${(apply.abroadPhone)?if_exists}"  class="{phone:true}"/>



如果要使用国际化验证消息则在messages_cn.js里添加对应的国际化信息即可
例如

Java代码 复制代码
  1. phone:"请填写正确的电话号码",   
  2. ip:"asdflkj;lkj",   
  3. …………  
phone:"请填写正确的电话号码",
ip:"asdflkj;lkj",
…………



注意:引用自定义js的时候,如果要让国际化信息生效,则messages_cn.js要在自定义的js之后引入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值