基于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;
}