jQuery Validate插件 && 表单验证演示

jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。


jQuery Validate插件

 导入

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

说明:注意文件引入顺序:在使用jQuery插件时,一定先引入jQuery文件,再引入其他插件文件。


页面准备

html部分源代码:

<body>
		<form action="Demo01.html" method="get" id="fform">
			姓名<input type="text" name="username"  id="username"/><br />
			密码<input type="password" name="password" id="password"/><br />
			再次<input type="password" name="repassword" id="repassword"/><br />
			年龄<input type="text" name="age" id="age"/><br />
			邮箱<input type="text" name="email" id="email"/><br />
			电话<input type="text" name="phone" id="phone"/><br />
			<div>
				
				爱好&nbsp;&nbsp;<input type="checkbox" value="football"  name="hobby"/>足球
								<input type="checkbox" value="basketball" name="hobby"/>篮球
								<input type="checkbox" value="volleyball" name="hobby"/>排球
				
			</div><br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="submit" value="submit" onclick="submitForm()"/>
		</form>
	</body>

注意这里一定要设置name和id属性值,因为后面进行验证的时候,IE浏览器会通过id值进行验证,而其他所有浏览器都以name值进行验证,所以这里需要把id值和name值设置成一样。还有后面三个复选框一定要用一个容器给包起来,我这里用了div,因为后面会进行设置提示信息,而提示信息的位置会在标签的后面,而如果不把这三个复选框包起来的话,提示信息就会出现在第一个复选框的后面。


校验方式

var result;   //因为后面两个函数都会用到,所以设置为全局变量
$(function(){
	// 返回值result.form()为true 说明验证通过,可以提交
    //myForm是from表单的id,result是用来接收结果,其他的为固定格式
	result = $('#myForm').validate({   

		//1 指定标签的验证规则(对哪个表单项,进行什么样的校验)
			
		//2指定验证不能通过时的提示信息
				
                //3 指定提示信息显示的位置
	});
				
});

//这个函数是定义在提交按钮上的			
function subForm(){
		if(result.form()){
			return true;  // 提交
		}else{
			return false;
		}
}

我们可以看到上面有三个步骤,我们进行验证的时候就需要用到这三个部分的功能。

我们将三个功能,从上往下讲解:

首先,我们可以去validate.js中查看(可以Ctrl+f 搜索message来进行获取):

这里前面的红框1,就是进行校验的关键字,而后面的就是如果出错的话的提示信息:

写到这里,可以先把所有源代码给出(记得看注释,注释很重要):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--<link rel="stylesheet" href="../css/jquery.validate.css" />-->
		<script type="text/javascript" src="../js/jquery-1.11.0.js" ></script>
		<script type="text/javascript" src="../js/jquery.validate.js" ></script>
	<!--	<script type="text/javascript" src="../js/test_phone.js" ></script>
		<script type="text/javascript" src="../js/message_cn.js" ></script>-->
		<script>
			var result;
			$(function(){
				result = $("#fform").validate({
					
					//1.对表单中哪个字段采用哪些校验规则
					//rules是关键字
					rules:{
						username:{
							required:true,
							maxlength:12,
							minlength:4
						},
						password:{
							required:true,
							rangelength:[6,12]
						},
						repassword:{
							equalTo:'#password'
						},
						age:{
							number:true,
							range:[0,150]
						},
						email:{
							email:true
						},
						/*phone:{
							phone:true
						},*/
						hobby:{
							maxlength:2
						}
					},
					//2.校验不通过的时候的提示信息:自定义信息,不设置可以有默认信息,上图红框2
					//messages关键字
					messages:{
						username:{
							/*
							 * 我们从上面的图中的第二个红框里可以得到默认的错误信息提示
							 * 但是都是英文的,所以我们可以进行自定义,自定义方式如下
							 * 第一种,就是没有参数的,像下面的required一样,直接在后面接字符串
							 * 第二种是有参数的,像下面的需要设置长度或者再下面设置一个范围的,需要用特定的
							 * 如下面的格式进行验证,当然,也可以自己进行定义(还是后面直接接字符串),但是用这样的特定
							 * 格式的好处是,在需求改变的时候,我们对源代码进行修改的我们只需要修改上面的rules里面的参数
							 * 而不用两边都修改了,减少了以后的工作量也减少了失误率。
							 */
							required:"用户名不能为空",
							maxlength:$.validator.format( "最多{0}个字符" ),
							minlength:$.validator.format( "最少{0}个字符" )
						},
						password:{
							required:"密码不能为空",
							rangelength:$.validator.format( "密码请设置在{0}到{1}个字符长度" )
						},
						repassword:{
							equalTo:"两次密码不一致"
						},
						age:{
							number:"不能输入数字之外其他字符",
							range:$.validator.format( "年龄请设置在{0}到{1}岁之间")
						},
						email:{
							email:"请输入正确的邮箱"
						},
						hobby:{
							maxlength:$.validator.format( "最多选择{0}个爱好")
						}
					},
					
					
					//3.指定提示信息显示的位置
					/*
					 * 下面一行的都为关键字,这里是设置错误信息显示的位置,主要是用jqery中的获取和修改元素内容的几个方法
					 * 因为我这里多选框那里用的是一个div包裹了起来,但是其他的都是要直接跟在了后面,所以进行了分别设置。
					 * 这里也可以得到,除了函数的声明,函数体是可以自己定义的。
					 * 这里的error是js文件打包好的错误信息,element指代的是我们进行验证的元素
					*/
					errorPlacement:function(error,element){
						if($(element).prop("name")=="hobby")
							error.appendTo(element.parent());
						else
							error.insertAfter(element);
					}
					
				});
			})
			function submitForm(){
				if(result.from()){
					return true;
				}else{
					return false;
				}
			}
		</script>
	</head>
	<body>
		<!-- 我这里下面的action里面的值是我自己定义的另一个网页,这里现在暂时是谁都可以,所以可以不写或者写一个读者自己定义的网页-->
		<!-- 否则即便验证正确也会报服务器错误,不过只要最后能够跳转,就证明验证成功了,method参数可以随意设置,直接删掉也可以-->
		<form action="Demo01.html" method="get" id="fform">
			姓名<input type="text" name="username"  id="username"/><br />
			密码<input type="password" name="password" id="password"/><br />
			再次<input type="password" name="repassword" id="repassword"/><br />
			年龄<input type="text" name="age" id="age"/><br />
			邮箱<input type="text" name="email" id="email"/><br />
			电话<input type="text" name="phone" id="phone"/><br />
			<div>
				
				爱好&nbsp;&nbsp;<input type="checkbox" value="football"  name="hobby"/>足球
								<input type="checkbox" value="basketball" name="hobby"/>篮球
								<input type="checkbox" value="volleyball" name="hobby"/>排球
				
			</div><br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="submit" value="submit" onclick="submitForm()"/>
		</form>
	</body>
</html>


通过上面的代码,我们可以很精确的进行位置的排布,和提示信息的输出。

我们可以发现,类似必填项,我们可以直接提示 “必填” 而不用设置的那么精确,用户依然会明白什么意思。所以,我们可以进行简略格式。


自定义提示信息文件

新建一个js文件,文件名自定义:我这里叫  :message_cn.js

内容:

jQuery.extend(jQuery.validator.messages,{
		required: "必填",
		email: "邮箱格式错误",
		number: "请输入一个数字",
		equalTo: "两次密码不一致",
		maxlength: $.validator.format( "最大长度为{0}" ),
		minlength: $.validator.format( "最小长度为{0}" ),
		rangelength: $.validator.format( "输入长度应在{0}~{1}之间" ),
		range: $.validator.format( "输入范围在{0}~{1}之间" ),
})

这里的第一行是固定格式,里面的内容是进行覆盖上面那张图片也就是validate插件里面的内容的。

这里可以解锁上面源代码中第10行代码的注释(该引入文件为上面的js文件)。

然后把后面的第二步的message全都给注释起来了。

随之我们会看到第九行的注释,然后我们还可以发现,我们下面进行对phone的验证的时候,用了一个phone的验证,但是我们validate插件中并没有phone关键字的验证,这是因为,电话号码大多数国家格式都是不一样的,所以没有进行整合到上面,所以,这也就提供了一个开放性的可以自定义验证的条件:


自定义验证规则

还是需要编写一个js文件:名字可自定义,我这里是test_phone.js   一般多写成  add_method.js

jQuery.validator.addMethod("phone",function(value,element){
	var phoneRex = /^1[3456789]\d{9}$/;
	if(phoneRex.test(value) || this.optional(element)){
		return true;
	}
},"请输入正确的手机号")

这里的第一行,除了phone是自己定义的验证规则关键字外,其他的都是固定格式:

                                      addMethod(参数1:验证规则关键字,参数2:验证函数 ,参数3:错误提示信息)

验证函数中第一行为验证电话号码的正则表达式,后面两个选项一个是验证正则表达式,另一个的作用是,输入框为空时也会返回true
否则,空字符串是不符合正则的,如果这一项为非必填项,那么空的字符串将永远无法完成验证,也就一直提交不了。

这时可以解开对phone的验证的注释


自定义提示信息样式

我们想到,既然是错误提示信息,那么提示信息应该是红色或者其他样式,那么我们怎么来设置提示信息的样式呢。

这里需要一个CSS样式文件。内容为规定的格式(可以自己创建,名字为jquery.validate.css   或者可以下载:):

label.error {
	color: red;
	font-size:11px;
	background: transparent url(image/unchecked.gif) no-repeat scroll 0 0;
}

label.checked {
	background: transparent url(image/checked.gif) no-repeat scroll 0 0;
}

然后再导入:(源代码第6行代码)


至此,我们可以进行自定义验证规则,自定义样式,自定义提示信息。

重要文件有:

最终源码:

html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../css/jquery.validate.css" />
		<script type="text/javascript" src="../js/jquery-1.11.0.js" ></script>
		<script type="text/javascript" src="../js/jquery.validate.js" ></script>
		<script type="text/javascript" src="../js/test_phone.js" ></script>
		<script type="text/javascript" src="../js/message_cn.js" ></script>
		<script>
			var result;
			$(function(){
				result = $("#fform").validate({
					
					//1.对表单中哪个字段采用哪些校验规则
					//rules是关键字
					rules:{
						username:{
							required:true,
							maxlength:12,
							minlength:4
						},
						password:{
							required:true,
							rangelength:[6,12]
						},
						repassword:{
							equalTo:'#password'
						},
						age:{
							number:true,
							range:[0,150]
						},
						email:{
							email:true
						},
						phone:{
							phone:true
						},
						hobby:{
							maxlength:2
						}
					},
					//2.校验不通过的时候的提示信息:自定义信息,不设置可以有默认信息,上图红框2
					//messages关键字
					/*messages:{
						username:{*/
							/*
							 * 我们从上面的图中的第二个红框里可以得到默认的错误信息提示
							 * 但是都是英文的,所以我们可以进行自定义,自定义方式如下
							 * 第一种,就是没有参数的,像下面的required一样,直接在后面接字符串
							 * 第二种是有参数的,像下面的需要设置长度或者再下面设置一个范围的,需要用特定的
							 * 如下面的格式进行验证,当然,也可以自己进行定义(还是后面直接接字符串),但是用这样的特定
							 * 格式的好处是,在需求改变的时候,我们对源代码进行修改的我们只需要修改上面的rules里面的参数
							 * 而不用两边都修改了,减少了以后的工作量也减少了失误率。
							 */
							/*required:"用户名不能为空",
							maxlength:$.validator.format( "最多{0}个字符" ),
							minlength:$.validator.format( "最少{0}个字符" )
						},
						password:{
							required:"密码不能为空",
							rangelength:$.validator.format( "密码请设置在{0}到{1}个字符长度" )
						},
						repassword:{
							equalTo:"两次密码不一致"
						},
						age:{
							number:"不能输入数字之外其他字符",
							range:$.validator.format( "年龄请设置在{0}到{1}岁之间")
						},
						email:{
							email:"请输入正确的邮箱"
						},
						hobby:{
							maxlength:$.validator.format( "最多选择{0}个爱好")
						}
					},*/
					
					
					//3.指定提示信息显示的位置
					/*
					 * 下面一行的都为关键字,这里是设置错误信息显示的位置,主要是用jqery中的获取和修改元素内容的几个方法
					 * 因为我这里多选框那里用的是一个div包裹了起来,但是其他的都是要直接跟在了后面,所以进行了分别设置。
					 * 这里也可以得到,除了函数的声明,函数体是可以自己定义的。
					 * 这里的error是js文件打包好的错误信息,element指代的是我们进行验证的元素
					*/
					errorPlacement:function(error,element){
						if($(element).prop("name")=="hobby")
							error.appendTo(element.parent());
						else
							error.insertAfter(element);
					}
					
				});
			})
			function submitForm(){
				if(result.from()){
					return true;
				}else{
					return false;
				}
			}
		</script>
	</head>
	<body>
		<!-- 我这里下面的action里面的值是我自己定义的另一个网页,这里现在暂时是谁都可以,所以可以不写或者写一个读者自己定义的网页-->
		<!-- 否则即便验证正确也会报服务器错误,不过只要最后能够跳转,就证明验证成功了,method参数可以随意设置,直接删掉也可以-->
		<form action="Demo01.html" method="get" id="fform">
			姓名<input type="text" name="username"  id="username"/><br />
			密码<input type="password" name="password" id="password"/><br />
			再次<input type="password" name="repassword" id="repassword"/><br />
			年龄<input type="text" name="age" id="age"/><br />
			邮箱<input type="text" name="email" id="email"/><br />
			电话<input type="text" name="phone" id="phone"/><br />
			<div>
				
				爱好&nbsp;&nbsp;<input type="checkbox" value="football"  name="hobby"/>足球
								<input type="checkbox" value="basketball" name="hobby"/>篮球
								<input type="checkbox" value="volleyball" name="hobby"/>排球
				
			</div><br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="submit" value="submit" onclick="submitForm()"/>
		</form>
	</body>
</html>

jquery.validate.css

label.error {
	color: red;
	font-size:11px;
	background: transparent url(image/unchecked.gif) no-repeat scroll 0 0;
}

label.checked {
	background: transparent url(image/checked.gif) no-repeat scroll 0 0;
}

message_cn.js

jQuery.extend(jQuery.validator.messages,{
		required: "必填",
		email: "邮箱格式错误",
		number: "请输入一个数字",
		equalTo: "两次密码不一致",
		maxlength: $.validator.format( "最大长度为{0}" ),
		minlength: $.validator.format( "最小长度为{0}" ),
		rangelength: $.validator.format( "输入长度应在{0}~{1}之间" ),
		range: $.validator.format( "输入范围在{0}~{1}之间" ),
})

test_phone.js

jQuery.validator.addMethod("phone",function(value,element){
	var phoneRex = /^1[3456789]\d{9}$/;
	if(phoneRex.test(value) || this.optional(element)){
		return true;
	}
},"请输入正确的手机号")

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值