jQuery Validate扩展验证方法

基于jquery.validation/1.14.0/jquery.validate.js,在前人基础上进行了拓展。

$(function(){
     
    // 判断整数value是否等于0
    jQuery.validator.addMethod("isIntEqZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value==0;       
    }, "整数必须为0"); 
      
    // 判断整数value是否大于0
    jQuery.validator.addMethod("isIntGtZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value>0;       
    }, "整数必须大于0"); 
      
    // 判断整数value是否大于或等于0
    jQuery.validator.addMethod("isIntGteZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value>=0;       
    }, "整数必须大于或等于0");   
    
    // 判断整数value是否不等于0 
    jQuery.validator.addMethod("isIntNEqZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value!=0;       
    }, "整数必须不等于0");  
    
    // 判断整数value是否小于0 
    jQuery.validator.addMethod("isIntLtZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value<0;       
    }, "整数必须小于0");  
    
    // 判断整数value是否小于或等于0 
    jQuery.validator.addMethod("isIntLteZero", function(value, element) {
      
         value=parseInt(value);      
         return this.optional(element) || value<=0;       
    }, "整数必须小于或等于0");  
    
    // 判断浮点数value是否等于0 
    jQuery.validator.addMethod("isFloatEqZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value==0;       
    }, "浮点数必须为0"); 
      
    // 判断浮点数value是否大于0
    jQuery.validator.addMethod("isFloatGtZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value>0;       
    }, "浮点数必须大于0"); 
      
    // 判断浮点数value是否大于或等于0
    jQuery.validator.addMethod("isFloatGteZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value>=0;       
    }, "浮点数必须大于或等于0");   
    
    // 判断浮点数value是否不等于0 
    jQuery.validator.addMethod("isFloatNEqZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value!=0;       
    }, "浮点数必须不等于0");  
    
    // 判断浮点数value是否小于0 
    jQuery.validator.addMethod("isFloatLtZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value<0;       
    }, "浮点数必须小于0");  
    
    // 判断浮点数value是否小于或等于0 
    jQuery.validator.addMethod("isFloatLteZero", function(value, element) {
      
         value=parseFloat(value);      
         return this.optional(element) || value<=0;       
    }, "浮点数必须小于或等于0");  
    
    // 判断浮点型  
    jQuery.validator.addMethod("isFloat", function(value, element) {
            
         return this.optional(element) || /^[-\+]?\d+(\.\d+)?$/.test(value);       
    }, "只能包含数字、小数点等字符"); 
     
    // 匹配integer
    jQuery.validator.addMethod("isInteger", function(value, element) {
            
         return this.optional(element) || (/^[-\+]?\d+$/.test(value) && parseInt(value)>=0);       
    }, "匹配integer");  
     
    // 判断数值类型,包括整数和浮点数
    jQuery.validator.addMethod("isNumber", function(value, element) {
            
         return this.optional(element) || /^[-\+]?\d+$/.test(value) || /^[-\+]?\d+(\.\d+)?$/.test(value);       
    }, "匹配数值类型,包括整数和浮点数");  
    
    // 只能输入[0-9]数字
    jQuery.validator.addMethod("isDigits", function(value, element) {
            
         return this.optional(element) || /^\d+$/.test(value);       
    }, "只能输入0-9数字");  
    
    // 判断中文字符 
    jQuery.validator.addMethod("isChinese", function(value, element) {
            
         return this.optional(element) || /^[\u0391-\uFFE5]+$/.test(value);       
    }, "只能包含中文字符。");   
 
    // 判断英文字符 
    jQuery.validator.addMethod("isEnglish", function(value, element) {
            
         return this.optional(element) || /^[A-Za-z]+$/.test(value);       
    }, "只能包含英文字符。");   
 
     // 手机号码验证    
    jQuery.validator.addMethod("isMobile", function(value, element) {
         
      var length = value.length;    
      return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-35-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));    
    }, "请输入正确的手机号码");

    // 电话号码验证    
    jQuery.validator.addMethod("isPhone", function(value, element) {
         
      var tel = /^(\d{3,4}-?)?\d{7,9}$/g;    
      return this.optional(element) || (tel.test(value));    
    }, "电话号码格式不正确");

    // 联系电话(手机/电话皆可)验证   
    /*jQuery.validator.addMethod("isTels", function(value,element) {   
        var length = value.length;   
        var mobile = /^(((13[0-9]{1})|(15[0-35-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
        var tel = /^(\d{3,4}-?)?\d{7,9}$/g;       
        return this.optional(element) || tel.test(value) || (length==11 && mobile.test(value));   
    }, "请输入正确手机号码或电话号码"); */
    jQuery.validator.addMethod("isTels", function(value,element) {
      
    	var length = value.length;
        var mobile =  /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(14[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
        var tel = /^\d{3,4}-\d{7,9}$/;
        /*console.log("tel:"+tel.test(value));
        var mo = length==11 && mobile.test(value);
        console.log("mobile:"+mo);*/
        return this.optional(element) || tel.test(value) || (length==11 && mobile.test(value));   
    }, "请输入正确手机号码或电话号码"); 
 
     // 匹配qq      
    jQuery.validator.addMethod("isQq", function(value, element) {
            
         return this.optional(element) || /^[1-9]\d{4,12}$/;       
    }, "QQ号码不合法");   
 
     // 邮政编码验证    
    jQuery.validator.addMethod("isZipCode", function(value, element) {
         
      var zip = /^[0-9]{6}$/;    
      return this.optional(element) || (zip.test(value));    
    }, "请输入正确的6位邮政编码");  
    
    // 匹配密码,以字母开头,长度在6-16之间,只能包含字符、数字和下划线。      
    jQuery.validator.addMethod("isPwd", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z]\\w{6,16}$/.test(value);       
    }, "以字母开头,长度在6-12之间,只能包含字符、数字和下划线。");  
    
    // 身份证号码验证
    jQuery.validator.addMethod("isIdCardNo", function(value, element) {
      
      var idCard = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;   
      return this.optional(element) || isIdCardNo(value);    
    }, "请输入正确的身份证号码"); 

    // IP地址验证   
    jQuery.validator.addMethod("ip", function(value, element) {
         
      return this.optional(element) || /^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/.test(value);    
    }, "请输入正确的IP地址");
   
    // 字符验证,只能包含中文、英文、数字、下划线等字符。    
    jQuery.validator.addMethod("stringCheck", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z0-9\u4e00-\u9fa5-_]+$/.test(value);       
    }, "只能包含中文、英文、数字、下划线等字符");   
   
    // 匹配english  
    jQuery.validator.addMethod("isEnglish", function(value, element) {
            
         return this.optional(element) || /^[A-Za-z]+$/.test(value);       
    }, "必须输入英文");   
    
    // 匹配中文 
    jQuery.validator.addMethod("isChinese", function(value, element) {
            
         return this.optional(element) || /^[\u4e00-\u9fa5]+$/.test(value);       
    }, "只能输入中文");   
    
    // 匹配中文(包括汉字和字符) 
    jQuery.validator.addMethod("isChineseChar", function(value, element) {
            
         return this.optional(element) || /^[\u0391-\uFFE5]+$/.test(value);       
    }, "匹配中文(包括汉字和字符) "); 
      
    // 判断是否为合法字符(a-zA-Z0-9-_)
    jQuery.validator.addMethod("isRightfulString", function(value, element) {
            
         return this.optional(element) || /^[A-Za-z0-9_-]+$/.test(value);       
    }, "判断是否为合法字符(a-zA-Z0-9-_)");   
    
    // 判断是否包含中英文特殊字符,除英文"-_"字符外
    jQuery.validator.addMethod("isContainsSpecialChar", function(value, element) {
       
         var reg = RegExp(/[(\ )(\`)(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\+)(\=)(\|)(\{)(\})(\')(\:)(\;)(\')(',)(\[)(\])(\.)(\<)(\>)(\/)(\?)(\~)(\!)(\@)(\#)(\¥)(\%)(\…)(\&)(\*)(\()(\))(\—)(\+)(\|)(\{)(\})(\【)(\】)(\‘)(\;)(\:)(\”)(\“)(\’)(\。)(\,)(\、)(\?)]+/);   
         return this.optional(element) || !reg.test(value);       
    }, "含有中英文特殊字符");
	
	//车牌号校验
	jQuery.validator.addMethod("isPlateNo", function(value, element) {
     
		var reg = /^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/;
		return this.optional(element) || (tel.test(value)); 
	},"请输入正确车牌号");
	
    // 地址验证
    jQuery.validator.addMethod("address", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z0-9\u4e00-\u9fa5]+$/.test(value);       
    }, "请输入正确的地址");
    
    // 网址验证
    jQuery.validator.addMethod("isUrl", function(value, element) {
            
        return this.optional(element) || /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/.test(value);       
   }, "请输入正确的网址");
    
    // 传真验证
    jQuery.validator.addMethod("isFastmail", function(value, element) {
            
        return this.optional(element) ||  /^(\d{3,4}-)?\d{7,8}$/.test(value);       
   }, "请输入正确的传真号码");
    
    // 字符验证,只能输入中文、英文
    jQuery.validator.addMethod("namePerson", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z\u4e00-\u9fa5]+$/.test(value);       
    }, "请输入正确的人名"); 
    
    // email验证
    jQuery.validator.addMethod("isEmail", function(value, element) {
            
         return this.optional(element) || /^[a-z0-9A-Z]+[-|a-z0-9A-Z\._]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9]+)+$/.test(value);       
    }, "请输入正确的e-mail地址"); 
    
    // 工商注册号验证
    jQuery.validator.addMethod("isBusinessnum", function(value, element) {
            
         return this.optional(element) || /(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/.test(value);       
    }, "请输入正确的工商注册码"); 
    
    // 长度验证    
    jQuery.validator.addMethod("checkNumLength9", function(value, element) {
         
      var zip = /^[0-9]{9}$/;    
      return this.optional(element) || (zip.test(value));    
    }, "长度不能超过9位"); 
    
    // 数字验证,只能输入整数数字
    jQuery.validator.addMethod("integer", function(value, element) {
            
         return this.optional(element) || /^(([^0][0-9]+|0)$)|^(([1-9]+)$)/.test(value);       
    }, "仅支持输入整数");
    
    // 数字验证,只能输入大于0的整数数字
    jQuery.validator.addMethod("greaterThanZeroInteger", function(value, element) {
            
         return this.optional(element) || /^\+?[1-9][0-9]*$/.test(value);       
    }, "仅支持输入大于0的整数");
    
    // 数字验证,支持输入整数、小数(小数点后保留1位)
    jQuery.validator.addMethod("integerOrDecimal", function(value, element) {
            
         return this.optional(element) || /^(([^0][0-9]+|0)\.([0-9]{1,1})$)|^(([^0][0-9]+|0)$)|^(([1-9]+)\.([0-9]{1,1})$)|^(([1-9]+)$)/.test(value);       
    }, "支持输入整数、小数(小数点后保留1位)");
    
    // 保留最多两位小数的百分比,支持输入整数、小数(小数点后最多保留2位)
    jQuery.validator.addMethod("percenTage", function(value, element) {
            
        return this.optional(element) || /^\d\.([1-9]{1,2}|[0-9][1-9])$|^[1-9]\d{0,1}(\.\d{1,2}){0,1}$|^100(\.0{1,2}){0,1}$/.test(value);       
   }, "支持输入(0~100)的整数或小数(小数点后最多保留2位)");
    
    // 数字验证,支持输入整数、小数(小数点后保留0位或者1位或者2位)
	 jQuery.validator.addMethod("integerOrDecimalValidate", function(value, element) {
            
         return this.optional(element) || /^(([1-9]{1}\d*)|(0{1}))(\.\d{0,2})?$/.test(value);       
    }, "支持输入整数、小数(小数点后最多保留2位)");
	 
	// 数字验证,支持输入整数、小数(小数点后保留0位或者1位)
	 jQuery.validator.addMethod("workDate", function(value, element) {
            
         return this.optional(element) || /^(([1-9]{1}\d*)|(0{1}))(\.\d{0,1})?$/.test(value);       
    }, "支持输入整数、小数(小数点后最多保留1位)");
    
    // 年份验证,2020年以后
    jQuery.validator.addMethod("year", function(value, element) {
            
         return this.optional(element) || /^20[2-9]\d$/.test(value);       
    }, "请输入正确的年份(2020年以后)");
    
    // 年份验证
    jQuery.validator.addMethod("yearValidate", function(value, element) {
            
         return this.optional(element) || /^2\d{3}$/.test(value);       
    }, "请输入正确的年份");
    
    // 小于当前年份验证
    jQuery.validator.addMethod("lessThanCurrentYeary", function(value, element) {
            
         return this.optional(element) || lessThanCurrentYeary(value);       
    }, "请输入小于等于当前年的年份");
    
    // 验证日期yyyy-MM-dd
    jQuery.validator.addMethod("dateValidate", function(value, element) {
            
        return this.optional(element) || /^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))$/.test(value);       
   }, "请输正确的日期(yyyy-MM-dd)");
    
    
    // 认证验证
    jQuery.validator.addMethod("authName", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z0-9\u4e00-\u9fa5\/]+$/.test(value);       
    }, "请输入正确的认证名称");
    
    // 设备名称验证
    jQuery.validator.addMethod("equipmentName", function(value, element) {
            
         return this.optional(element) || /^[a-zA-Z0-9\u4e00-\u9fa5]+$/.test(value);       
    }, "请输入正确的设备名称");
    
 // 经验年限必须小于毕业时间+1至今(因为可能有一年实习期)
    jQuery.validator.addMethod("chickDate", function(value, element) {
     
    	var myDate = new Date();
    	myDate.getFullYear();//获取当年的年份
    	//console.log("当前年:"+myDate.getFullYear());
    	var chickDate = myDate.getFullYear() - $("#eGraduationtime").val().split('-')[0] + 1;//获取最大的工作年限
    	//console.log("最大工作年限:"+chickDate);
    	if(chickDate<0){
     
    		chickDate = 0;
    	}
    	var flag = true;
    	if(chickDate<$("#eExperience").val()){
     
    		flag = false;
    	}
         return this.optional(element) || flag;       
    }, "经验年限与毕业时间折算不正确");
    
 // 控件中的两个年份大小比较
    jQuery.validator.addMethod("checkDate", function(value, element) {
       
    	 var timeFlag = true;
    	 $("#cfAuthFileDate").val();//通过时间
    	 $("#cfFileCmmplantime").val();//计划认证时间
    	 console.log($("#cfAuthFileDate").val());
    	 console.log($("#cfFileCmmplantime").val());
    	 if($("#cfAuthFileDate").val()!="" && $("#cfAuthFileDate").val()!=undefined && getDate( $("#cfAuthFileDate").val())<getDate( $("#cfFileCmmplantime").val())){
     
    		 timeFlag = false;
    	 }
         return this.optional(element) || timeFlag;       
    }, "通过时间不能小于计划时间");
    
    // 纳税人识别号验证
    jQuery.validator.addMethod("isTaxpayerNumber", function(value, element) {
            
         return this.optional(element) || /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/.test(value);       
    }, "请输入正确的纳税人识别号");
    
    // 开户行账号验证
    jQuery.validator.addMethod("bankNumber", function(value, element) {
            
         return this.optional(element) || /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/.test(value);       
    }, "请输入正确的开户行账号");
});
//身份证号码的验证规则
function isIdCardNo(num){
      
    //if (isNaN(num)) {alert("输入的不是数字!"); return false;} 
   var len = num.length, re; 
   if (len == 15) 
   re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{2})(\w)$/); 
   else if (len == 18) 
   re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\w)$/); 
   else {
     
		//alert("输入的数字位数不对。"); 
		return false;
	} 
   var a = num.match(re); 
   if (a != null) 
   {
      
   if (len==15) 
   {
      
   var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); 
   var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
   } 
   else 
   {
      
   var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); 
   var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
   } 
   if (!B) {
     
		//alert("输入的身份证号 "+ a[0] +" 里出生日期不对。"); 
		return false;
	} 
   } 
   if(!re.test(num)){
     
		//alert("身份证最后一位只能是数字和字母。");
		return false;
	}
   return true; 
};

// 验证年份小于当前年份
function lessThanCurrentYeary(value){
     
	// 当前日期
	var myDate = new Date();
	// 当前年
    var tYear = myDate.getFullYear();
    // 判断输入的年份是否小于等于当前年
    if(value <= tYear && /^2\d{3}$/.test(value)){
     
    	return true;
    }else{
     
    	return false;
    }
    
}
//将日期转化为ie兼容的格式
function getDate(time){
     
	 var aStart=time.split('-'); //转成成数组,分别为年,月,日 时分秒
	 var DateTemp = aStart[0]+"/" + aStart[1]+ "/" + aStart[2];
	 return DateTemp;
}

你可能感兴趣的:(前端,js,正则表达式,javascript)