jquery validation插件用法之自定义规则

自定义验证规则:

 

 $.validator.addMethod(
       "formula",                      //验证方法
       function(value, element, param) {           //验证规则
           return value = eval_r(param);
       },
       '请输入正确的数学公式结果' //验证信息
       );

 

 验证规则参数说明:value代表要验证element的值,param代表例如minlength:2规则中的2.

 function返回结果为true时成功,其它失败。

一些其它的验证规则(未验证过)

 

复制代码
// ip验证
jQuery.validator.addMethod( " ip " function (value, element) {      
    
return   this .optional(element)  ||  ( / ^(\d+)\.(\d+)\.(\d+)\.(\d+)$ / .test(value)  &&  (RegExp.$ 1   <</span> 256 && RegExp.$2 <</span> 256 && RegExp.$3 <</span> 256 && RegExp.$4 <</span> 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的文件");
复制代码

ps: this.optional(element)的意义。比如对一个文本框进行最小值验证,当值为空时,

this.optional(element) = true;当有值时,不管是多少,无论是否滿足规则 ,this.optional(element) = false.

为什么要加上这句呢,想想看你要设定一个minlength:2规则,但这不是必填值。来看下minlength验证规则

 minlength: function(value, element, param) {

         return this.optional(element) || this.getLength($.trim(value), element) >= param;
      },

 

如果没加上this.optional(element) ,当输入值为空时,this.getLength($.trim(value), element) >= param 就是0>=2显然是false.那验证就永远成功不了了。

 

你可能感兴趣的:(jquery validation插件用法之自定义规则)