jQuery Validation详解

看了好多网上的资料还有api终于知道个大概了

需要引入的文件

     <script src="js/jquery-1.7.2.js" type="text/javascript"></script>

     <script src="js/jquery.validate.js" type="text/javascript"></script>

使用方法

      a>把验证的规则写在标签内,如 姓名:<input id="name" name="name" minlength="2" type="text" required /> 即要求name必填且最少长度是2,    最后调用$("form").validate();就会验证表单

      b>把验证的规则写在validate()方法中

$("#myForm").validate({
   rules:{
	username:{
		required : true,
		minlength : 2
	} 
   } 
})

在使用中可以两者结合,验证规则有如下:

required:true 必填

minlength:最小长度        maxlength:最大长度

rangelength: [3,10] 长度介于 3 和 1 之间的字符串

range:[100,1000] 只能是100和 1000 之间的值"

min:最小值      max:最大值

email:true 验证邮箱

url:true 验证是否是合法的网址

date:true 验证是否是合法的日期 new Date() 类型格式

dateISO:true 验证是否是合法的日期 年/月/日 或 年-月-日 格式

number:true 验证是否是合法的数字

digits:true 验证是否为整数

creditcard: 验证合法的信用卡号

equalTo:'#pass' 与哪个表单字段的值相等,常用于验证重复输入密码

accept: "gif|png|jpg" 验证是否是合法后缀名,常用于验证文件的扩展名

remote:'url' 远程验证,返回值只能是true或false。在访问指定的url时,会自动把当前字段的值做为参数传递过去。

remote:{ 
      url: "UserServlet", 
      type: "post", //传值方式
      data:{ //要传过的值  返回true时表示通过验证,false反
      username: function() { return $("#username").val();}
      } 
}

插件中还提供了增加规则的方法,可以来增加一些我们自己的规则,方法

jQuery.validator.addMethod("规则名称", function(value, element, params) {

        return this.optional(element) || 验证value

}

如下这个自定义的验证规则

jQuery.validator.addMethod("isZipCode", function(value, element) {
var zip = /^[0-9]{6}$/;
return this.optional(element) || (zip.test(value));
}, "请正确填写您的邮政编码!");

验证信息的国际化,默认验证提示是英文的,导入validation已写好的国际化文件就可实现国际化,如:<script src="js/messages_zh.js" type="text/javascript"></script>

改变 错误/正确 消息显示样式

指定label.error的样式就可以了,如下:

<style type="text/css">
       label.error{color:#ea5200; margin-left:4px; padding:0px 20px;background:url(images/unchecked.gif) no-repeat 2px 0 }
       label.right{margin-left:4px; padding-left:20px; background:url(images/checked.gif) no-repeat 2px 0}
</style>

让错误提示信息显示到指定的位置

解决办法是在validate({})追加以下代码:

errorPlacement: function(error, element) { 
    if ( element.is(":radio") ) 
        error.appendTo ( element.parent() ); 
    else if ( element.is(":checkbox") ) 
        error.appendTo ( element.parent() ); 
    else if ( element.is("input[name=captcha]") ) 
        error.appendTo ( element.parent() ); 
    else 
        error.insertAfter(element); 
}

 

修改提示信息的内容在message中写即可,如下:

messages:{ //自定义错误信息内容,如果某项没写则使用默认的信息提示
     username:{
	required:"请填写用户名",
	minlength:"最小长度是2",
	remote:"该用户名已存在!"
     }
}

 

重置表单。Form表单原始的重置方法是reset自带

<input type="reset" value="重 置" />

点击“重置”按钮,表单元素将会重置,但是验证的提示信息并没重置,Validation提供了重置表单的方法:resetForm()

$("input:reset").click(function(){ 
    validate.resetForm(); 
});

下面是一个代码样例:
<!-- 需要引入的文件 -->
<script src="js/jquery-1.7.2.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script src="js/messages_zh.js" type="text/javascript"></script>

<script type="text/javascript">
	$().ready(function() {

		 //自定义 邮政编码验证    
		jQuery.validator.addMethod("isZipCode", function(value, element) {    
		  var zip = /^[0-9]{6}$/;    
		  return this.optional(element) || (zip.test(value));    
		}, "请正确填写您的邮政编码!");        
		//自定义 身份证号码验证
		jQuery.validator.addMethod("isIdCardNo", function(value, element) { 
		  var idCard = /^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\w)$/;   
		  return this.optional(element) || (idCard.test(value));    
		}, "请输入正确的身份证号码!"); 

		var validate=$("#myForm").validate({
			rules:{
				username:{
					required : true,
					minlength : 2,
					remote:{ 
						url: "UserServlet", 
		                type: "post", //传值方式
		                data:{ //要传过的值  返回true时表示通过验证,false反
		                	username: function() { return $("#username").val();}
		                } 
		            } 
				},
				password:{
					required : true,
					minlength : 5
				},
				rpassword:{
					equalTo : "password"
				},
				email:{
					required : true,
					email : true
				},
				url:"url", //只有一个验证规则时可以用引号
				sex:"required",
				code:"isZipCode",
				idCard:{
					required:true,
					isIdCardNo:true
				}
			},

			messages:{ //自定义错误信息内容,如果某项没写则使用默认的信息提示
				username:{
					required:"请填写用户名",
					minlength:"最小长度是2",
					remote:"该用户名已存在!"
				},
			},

			errorPlacement: function(error, element) {//处理错误信息位置,在下面的复选框用到
				if ( element.is(":radio") )
					error.appendTo ( element.parent() );
				else if ( element.is(":checkbox") )
					error.appendTo ( element.parent() );
				else if ( element.is("input[name=captcha]") )
					error.appendTo ( element.parent() );
				else
					error.insertAfter(element);
			},
		    success: function(label) {  //与上面errorPlacement对应
				   label.html(" ").addClass("right");
		    }	
		});
 		$("input:reset").click(function(){ //重置,包括错误提示
 			validate.resetForm(); //注意此处validate是上面定义过的,由validate()函数返回的值
 		});
});
</script>

<!--处理错误信息样式 label.error  label.right  -->
<style type="text/css">
	#myForm label.error{color:red; margin-left:4px; padding:0px 20px; background:url(js/unchecked.gif) no-repeat 2px 0 }
	#myForm label.right{margin-left:4px; padding-left:20px; background:url(js/checked.gif) no-repeat 2px 0}
</style>
</head>
<body>

	<form id="myForm" method="get" action="">
		<table>
			<tr>
				<td>用户名*:</td>
				<td><input name="username" type="text" id="username"/></td>
			</tr>
			<tr>
				<td>密码*:</td>
				<td><input name="password" type="password" /></td>
			</tr>
			<tr>
				<td>重复密码*:</td>
				<td><input name="rpassword" type="password" /></td>
			</tr>
			<tr>
				<td>邮箱*:</td>
				<td><input type="text" name="email" /></td>
			</tr>
			<tr>
				<td>网址:</td>
				<td><input type="text" name="url" /></td>
			</tr>
			<tr>
				<td>规章:</td><!-- 此处需错误信息位置需要处理,使错误提示出现在“协议”两字后 -->
				<td><input type="checkbox" name="chk"  class="required"/>接受此协议</td>
			</tr>
			<tr>
				<td>性别:</td>
				<td><input type="radio" name="sex" />男 <input type="radio" name="sex"/>女</td>
			</tr>
			<tr>
				<td>邮政:</td><!-- 自定义的验证规则 -->
				<td><input type="text" name="code" required/></td>
			</tr>
			<tr>
				<td>身份证:</td><!-- 自定义的验证规则 -->
				<td><input type="text" name="idCard"/></td>
			</tr>
			<tr>
				<td><input type="submit" value="提交" /></td>
				<td><input type="reset" value="重置" /></td>
			</tr>
		</table>
	</form>

</body>
运行结果如下:
验证框架演示

 

注意:

今天在工作室,一同学说如果html标签name属性中有'.'就不能用了,因为他在使用struts2获取传过来的值时遇到过,jquery的validate表单验证框架是按照name来验证的,后来我在网上搜了下,有人说在js中把name(比如说"user.name")用' '或" "包住就行了,试了下果断行,嘎……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值