(转)封装jQuery Validate扩展验证方法

http://www.cnblogs.com/linjiqin/p/3433635.html

一、封装自定义验证方法-validate-methods.js

复制代码

/*****************************************************************

jQueryValidate扩展验证方法(linjq)

*****************************************************************/

$(function(){

//判断整数value是否等于0

jQuery.validator.addMethod("isIntEqZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value==0;

},"整数必须为0");

//判断整数value是否大于0

jQuery.validator.addMethod("isIntGtZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value>0;

},"整数必须大于0");

//判断整数value是否大于或等于0

jQuery.validator.addMethod("isIntGteZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value>=0;

},"整数必须大于或等于0");

//判断整数value是否不等于0

jQuery.validator.addMethod("isIntNEqZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value!=0;

},"整数必须不等于0");

//判断整数value是否小于0

jQuery.validator.addMethod("isIntLtZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value<0;

},"整数必须小于0");

//判断整数value是否小于或等于0

jQuery.validator.addMethod("isIntLteZero",function(value,element){

value=parseInt(value);

returnthis.optional(element)||value<=0;

},"整数必须小于或等于0");

//判断浮点数value是否等于0

jQuery.validator.addMethod("isFloatEqZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value==0;

},"浮点数必须为0");

//判断浮点数value是否大于0

jQuery.validator.addMethod("isFloatGtZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value>0;

},"浮点数必须大于0");

//判断浮点数value是否大于或等于0

jQuery.validator.addMethod("isFloatGteZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value>=0;

},"浮点数必须大于或等于0");

//判断浮点数value是否不等于0

jQuery.validator.addMethod("isFloatNEqZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value!=0;

},"浮点数必须不等于0");

//判断浮点数value是否小于0

jQuery.validator.addMethod("isFloatLtZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value<0;

},"浮点数必须小于0");

//判断浮点数value是否小于或等于0

jQuery.validator.addMethod("isFloatLteZero",function(value,element){

value=parseFloat(value);

returnthis.optional(element)||value<=0;

},"浮点数必须小于或等于0");

//判断浮点型

jQuery.validator.addMethod("isFloat",function(value,element){

returnthis.optional(element)||/^[-\+]?\d+(\.\d+)?$/.test(value);

},"只能包含数字、小数点等字符");

//匹配integer

jQuery.validator.addMethod("isInteger",function(value,element){

returnthis.optional(element)||(/^[-\+]?\d+$/.test(value)&&parseInt(value)>=0);

},"匹配integer");

//判断数值类型,包括整数和浮点数

jQuery.validator.addMethod("isNumber",function(value,element){

returnthis.optional(element)||/^[-\+]?\d+$/.test(value)||/^[-\+]?\d+(\.\d+)?$/.test(value);

},"匹配数值类型,包括整数和浮点数");

//只能输入[0-9]数字

jQuery.validator.addMethod("isDigits",function(value,element){

returnthis.optional(element)||/^\d+$/.test(value);

},"只能输入0-9数字");

//判断中文字符

jQuery.validator.addMethod("isChinese",function(value,element){

returnthis.optional(element)||/^[\u0391-\uFFE5]+$/.test(value);

},"只能包含中文字符。");

//判断英文字符

jQuery.validator.addMethod("isEnglish",function(value,element){

returnthis.optional(element)||/^[A-Za-z]+$/.test(value);

},"只能包含英文字符。");

//手机号码验证

jQuery.validator.addMethod("isMobile",function(value,element){

varlength=value.length;

returnthis.optional(element)||(length==11&&/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));

},"请正确填写您的手机号码。");

//电话号码验证

jQuery.validator.addMethod("isPhone",function(value,element){

vartel=/^(\d{3,4}-?)?\d{7,9}$/g;

returnthis.optional(element)||(tel.test(value));

},"请正确填写您的电话号码。");

//联系电话(手机/电话皆可)验证

jQuery.validator.addMethod("isTel",function(value,element){

varlength=value.length;

varmobile=/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

vartel=/^(\d{3,4}-?)?\d{7,9}$/g;

returnthis.optional(element)||tel.test(value)||(length==11&&mobile.test(value));

},"请正确填写您的联系方式");

//匹配qq

jQuery.validator.addMethod("isQq",function(value,element){

returnthis.optional(element)||/^[1-9]\d{4,12}$/;

},"匹配QQ");

//邮政编码验证

jQuery.validator.addMethod("isZipCode",function(value,element){

varzip=/^[0-9]{6}$/;

returnthis.optional(element)||(zip.test(value));

},"请正确填写您的邮政编码。");

//匹配密码,以字母开头,长度在6-12之间,只能包含字符、数字和下划线。

jQuery.validator.addMethod("isPwd",function(value,element){

returnthis.optional(element)||/^[a-zA-Z]\\w{6,12}$/.test(value);

},"以字母开头,长度在6-12之间,只能包含字符、数字和下划线。");

//身份证号码验证

jQuery.validator.addMethod("isIdCardNo",function(value,element){

//varidCard=/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\w)$/;

returnthis.optional(element)||isIdCardNo(value);

},"请输入正确的身份证号码。");

//IP地址验证

jQuery.validator.addMethod("ip",function(value,element){

returnthis.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){

returnthis.optional(element)||/^[a-zA-Z0-9\u4e00-\u9fa5-_]+$/.test(value);

},"只能包含中文、英文、数字、下划线等字符");

//匹配english

jQuery.validator.addMethod("isEnglish",function(value,element){

returnthis.optional(element)||/^[A-Za-z]+$/.test(value);

},"匹配english");

//匹配汉字

jQuery.validator.addMethod("isChinese",function(value,element){

returnthis.optional(element)||/^[\u4e00-\u9fa5]+$/.test(value);

},"匹配汉字");

//匹配中文(包括汉字和字符)

jQuery.validator.addMethod("isChineseChar",function(value,element){

returnthis.optional(element)||/^[\u0391-\uFFE5]+$/.test(value);

},"匹配中文(包括汉字和字符)");

//判断是否为合法字符(a-zA-Z0-9-_)

jQuery.validator.addMethod("isRightfulString",function(value,element){

returnthis.optional(element)||/^[A-Za-z0-9_-]+$/.test(value);

},"判断是否为合法字符(a-zA-Z0-9-_)");

//判断是否包含中英文特殊字符,除英文"-_"字符外

jQuery.validator.addMethod("isContainsSpecialChar",function(value,element){

varreg=RegExp(/[(\)(\`)(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\+)(\=)(\|)(\{)(\})(\')(\:)(\;)(\')(',)(\[)(\])(\.)(\<)(\>)(\/)(\?)(\~)(\!)(\@)(\#)(\¥)(\%)(\…)(\&)(\*)(\()(\))(\—)(\+)(\|)(\{)(\})(\【)(\】)(\‘)(\;)(\:)(\”)(\“)(\’)(\。)(\,)(\、)(\?)]+/);

returnthis.optional(element)||!reg.test(value);

},"含有中英文特殊字符");

//身份证号码的验证规则

functionisIdCardNo(num){

 //if(isNaN(num)){alert("输入的不是数字!");returnfalse;}

varlen=num.length,re;

if(len==15)

re=newRegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{2})(\w)$/);

elseif(len==18)

re=newRegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\w)$/);

else{

//alert("输入的数字位数不对。");

returnfalse;

}

vara=num.match(re);

if(a!=null)

{

if(len==15)

{

varD=newDate("19"+a[3]+"/"+a[4]+"/"+a[5]);

varB=D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];

}

else

{

varD=newDate(a[3]+"/"+a[4]+"/"+a[5]);

varB=D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];

}

if(!B){

//alert("输入的身份证号"+a[0]+"里出生日期不对。");

returnfalse;

}

}

if(!re.test(num)){

//alert("身份证最后一位只能是数字和字母。");

returnfalse;

}

returntrue;

}

});

复制代码

二、测试-validate-methods.jsp

复制代码

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"+request.getServerName()+":"

+request.getServerPort()+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>jQueryValidate扩展验证方法</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<scripttype="text/javascript"src="<%=request.getContextPath()%>/validate/jquery-1.6.2.min.js"></script>

<scripttype="text/javascript"src="<%=request.getContextPath()%>/validate/jquery.validate.min.js"></script>

<scripttype="text/javascript"src="<%=request.getContextPath()%>/validate/jquery.metadata.min.js"></script>

<scripttype="text/javascript"src="<%=request.getContextPath()%>/validate/validate-methods.js"></script>

<scripttype="text/javascript"src="<%=request.getContextPath()%>/validate/messages_zh.js"></script>

<scripttype="text/javascript">

$(function(){

varvalidate=$("#myform").validate({

debug:true,//调试模式取消submit的默认提交功能

submitHandler:function(form){//表单提交句柄,为一回调函数,带一个参数:form

alert("提交表单");

form.submit();//提交表单

},

rules:{

zero:{

//isIntEqZero:true

//isFloat:true

//isInteger:true

//isNumber:true

//isMobile:true

//isPhone:true

//isTel:true

//isIdCardNo:true

//isRightfulString:true

isContainsSpecialChar:true

}

},

//如果验证控件没有message,将调用默认的信息

messages:{

zero:{

//isIntEqZero:"请输入0"

//isFloat:"请输入浮点数"

//isInteger:"请输入整数"

}

}

});

});

</script>

</head>

<body>

<formid="myform"method="post"action="">

<p>

<labelfor="zero">输入框:</label>

<!--id和name最好同时写上-->

<inputid="zero"name="zero"/>

</p>

<p>

<inputclass="submit"type="submit"value="验证"/>

</p>

</form>

</body>

</html>

复制代码

相关推荐