一、使用jQuery验证的前提条件
导入jquery.js和jquery.validate.js两个脚本文件如:
<script src="/javascript/jquery.js" type="text/javascript"></script>
<script src="/javascript/jquery.validate.js" type="text/javascript"></script>
二、默认的常用验证规则
(1)required:true 必输字段
(2)remote:"check.php" 使用ajax方法调用check.php验证输入值
(3)email:true 必须输入正确格式的电子邮件
(4)url:true 必须输入正确格式的网址
(5)date:true 必须输入正确格式的日期 日期校验ie6出错,慎用
(6)dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性
(7)number:true 必须输入合法的数字(负数,小数)
(8)digits:true 必须输入整数
(9)creditcard: 必须输入合法的信用卡号
(10)equalTo:"#field" 输入值必须和#field相同
(11)accept: 输入拥有合法后缀名的字符串(上传文件的后缀)
(12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符)
(13)minlength:10 输入长度最小是10的字符串(汉字算一个字符)
(14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
(15)range:[5,10] 输入值必须介于 5 和 10 之间
(16)max:5 输入值不能大于5
(17)min:10 输入值不能小于10
三、对应上面规则的默认出错提示文字
essages: {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.",
number: "Please enter a valid number.",
numberDE: "Bitte geben Sie eine Nummer ein.",
digits: "Please enter only digits",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
accept: "Please enter a value with a valid extension.",
maxlength: $.validator.format("Please enter no more than {0} characters."),
minlength: $.validator.format("Please enter at least {0} characters."),
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
range: $.validator.format("Please enter a value between {0} and {1}."),
max: $.validator.format("Please enter a value less than or equal to {0}."),
min: $.validator.format("Please enter a value greater than or equal to {0}.")
},
如需要修改,可在js代码中加入:
jQuery.extend(jQuery.validator.messages, {
required: "必选字段",
remote: "请修正该字段",
email: "请输入正确格式的电子邮件",
url: "请输入合法的网址",
date: "请输入合法的日期",
dateISO: "请输入合法的日期 (ISO).",
number: "请输入合法的数字",
digits: "只能输入整数",
creditcard: "请输入合法的信用卡号",
equalTo: "请再次输入相同的值",
accept: "请输入拥有合法后缀名的字符串",
maxlength: jQuery.validator.format("请输入一个 长度最多是 {0} 的字符串"),
minlength: jQuery.validator.format("请输入一个 长度最少是 {0} 的字符串"),
rangelength: jQuery.validator.format("请输入 一个长度介于 {0} 和 {1} 之间的字符串"),
range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
max: jQuery.validator.format("请输入一个最大为{0} 的值"),
min: jQuery.validator.format("请输入一个最小为{0} 的值")
});
推荐做法,将此文件放入messages_cn.js中,在页面中引入
<script src="../js/messages_cn.js" type="text/javascript"></script>
四、使用方式
<script src="../js/jquery.js" type="text/javascript"></script>
<script src="../js/jquery.validate.js" type="text/javascript"></script>
<script src="./js/jquery.metadata.js" type="text/javascript"></script>
$().ready(function() {
$("#signupForm").validate();
});
<form id="signupForm" method="get" action="">
<p>
<label for="firstname">Firstname</label>
<input id="firstname" name="firstname" class="required" />
</p>
<p>
<label for="email">E-Mail</label>
<input id="email" name="email" class="required email" />
</p>
<p>
<label for="password">Password</label>
<input id="password" name="password" type="password" class="{required:true,minlength:5}" />
</p>
<p>
<label for="confirm_password">确认密码</label>
<input id="confirm_password" name="confirm_password" type="password" class="{required:true,minlength:5,equalTo:'#password'}" />
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</form>
使用class="{}"的方式,必须引入包:jquery.metadata.js
可以使用如下的方法,修改提示内容:
class="{required:true,minlength:5,messages:{required:'请输入内容'}}"
在使用equalTo关键字时,后面的内容必须加上引号,如下代码:
class="{required:true,minlength:5,equalTo:'#password'}"
$().ready(function() {
$("#signupForm").validate({
rules: {
firstname: "required",
email: {
required: true,
email: true
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
}
},
messages: {
firstname: "请输入姓名",
email: {
required: "请输入Email地址",
email: "请输入正确的email地址"
},
password: {
required: "请输入密码",
minlength: jQuery.format("密码不能小于{0}个字 符")
},
confirm_password: {
required: "请输入确认密码",
minlength: "确认密码不能小于5个字符",
equalTo: "两次输入密码不一致不一致"
}
}
});
});
//messages处,如果某个控件没有message,将调用默认的信息
<form id="signupForm" method="get" action="">
<p>
<label for="firstname">Firstname</label>
<input id="firstname" name="firstname" />
</p>
<p>
<label for="email">E-Mail</label>
<input id="email" name="email" />
</p>
<p>
<label for="password">Password</label>
<input id="password" name="password" type="password" />
</p>
<p>
<label for="confirm_password">确认密码</label>
<input id="confirm_password" name="confirm_password" type="password" />
</p>
<p>
<input class="submit" type="submit" value="Submit"/>
</p>
</form>
required:true 必须有值
required:"#aa:checked"表达式的值为真,则需要验证
required:function(){}返回为真,表时需要验证
后边两种常用于,表单中需要同时填或不填的元素
一个完整的example:
jquery表单验证:
/**
* @author Administrator
*/
function initValidator(base){
$("#thisForm").validate({
onkeyup:false,
//设置验证规则
rules: {
"userName": {
required: true,
userNameCheck: true
},
"passWord": {
required: true,
rangelength: [6, 12]
},
"passWordAgain": {
required: true,
rangelength: [6, 12],
equalTo: "#passWord"
},
"corpName": {
required: true
},
"sms": {
required: true,
isMobile: true
},
"email": {
required: true,
isEmail: true
}
},
//设置错误信息
messages: {
"userName": {
required: "请输入用户名",
userNameCheck: "请输入4-20位字母开头的字母或数字和下划线"
},
"passWord": {
required: "请输入密码",
rangelength: "密码长度为6-12位"
},
"passWordAgain": {
required: "请再次输入密码",
rangelength: "密码长度为6-12位",
equalTo: "两次输入密码不相同"
},
"corpName": {
required: "请输入公司名称"
},
"sms": {
required: "请输入手机号码",
isMobile: "请输入有效的手机号码"
},
"email": {
required: "请输入邮箱",
isEmail: "请正确填写邮箱格式"
}
},
errorElement:"font",
errorPlacement: function(error, element){
error.appendTo(element.parent().find(".tipinfo"));
},success:"valid"
});
}
html文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery validate表单验证插件制作注册表单验证提交</title>
<meta name="description" content="jquery validate表单验证插件制作用户注册页面表单提交验证,用户名、手机、密码、邮箱等表单验证。通过这款validate表单验证插件能制作多种表单提交验证。" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script language="javascript" type="text/javascript" src="js/jquery.validate.js"></script>
<script language="javascript" type="text/javascript" src="js/validate_expand.js"></script>
<script language="javascript" type="text/javascript" src="js/validate.js"></script>
<script type="text/javascript">
$(document).ready(function(){
initValidator();
});
</script>
</head>
<body>
<style type="text/css">
*{margin:0;padding:0;list-style-type:none;}
a,img{border:0;}
body{font:12px/180% Arial, Helvetica, sans-serif ,"宋体";}
/* demo */
.demo{width:600px;margin:50px auto 0 auto;}
.demo table td{height:50px;vertical-align:top;}
.demo table .tdcon{text-align:right;width:160px;padding:5px 0 0 0;height:45px;}
.demo table .stext{border:solid 1px #ddd;height:20px;line-height:20px;font-size:12px;padding:2px;width:200px;float:left;}
/* tipinfo */
.tipinfo{float:left;}
.tipinfo font.error{background:url("images/unchecked.jpg") no-repeat left;padding-left:17px;color:#eb0000;width:300px;display:block;}
.tipinfo font.valid{background:url("images/checked.gif") no-repeat left;width:14px;height:13px;overflow:hidden;padding:0;margin:5px 0 0 5px;display:inline-block;}
/* Button base */
.Button{
position:relative;
display:inline-block;
padding:.45em .825em .45em;
text-align:center;
line-height:1em;
border:1px solid transparent;
cursor:pointer;
border-radius:.3em;
-moz-border-radius:.3em;
-webkit-border-radius:.3em;
-moz-transition-property:color, -moz-box-shadow, text-shadow;
-moz-transition-duration:.05s;
-moz-transition-timing-function:ease-in-out;
-webkit-transition-property:color, -webkit-box-shadow, text-shadow;
-webkit-transition-duration:.05s;
-webkit-transition-timing-function:ease-in-out;
box-shadow:0 1px rgba(255,255,255,0.8), inset 0 1px rgba(255,255,255,0.35);
-moz-box-shadow:0 1px rgba(255,255,255,0.8), inset 0 1px rgba(255,255,255,0.35);
-webkit-box-shadow:0 1px rgba(255,255,255,0.8), inset 0 1px rgba(255,255,255,0.35);
}
.Button:hover {text-decoration:none;}
.Button strong {position:relative; z-index:2;}
.Button{
display:block;border:1px solid;opacity:1;
border-radius:.3em;
-moz-border-radius:.3em;
-webkit-border-radius:.3em;
box-shadow:inset 0 1px rgba(255,255,255,0.35);
-moz-box-shadow:inset 0 1px rgba(255,255,255,0.35);
-webkit-box-shadow:inset 0 1px rgba(255,255,255,0.35);
-moz-transition-property:opacity;
-moz-transition-duration:0.5s;
-moz-transition-timing-function:ease-in-out;
-webkit-transition-property:opacity;
-webkit-transition-duration:0.5s;
-webkit-transition-timing-function:ease-in-out;
}
.Button:hover span{
-moz-transition-property:opacity;
-moz-transition-duration:0.05s;
-moz-transition-timing-function:linear;
-webkit-transition-property:opacity;
-webkit-transition-duration:0.05s;
-webkit-transition-timing-function:linear;
}
.Button:active span{
-moz-transition:none;
-webkit-transition:none;
}
/* Blue Button */
.BlueButton{color:#fcf9f9; text-shadow:0 -1px rgba(34,25,25,0.5);}
.BlueButton:hover {color:#fff; text-shadow:0 -1px rgba(34,25,25,0.3);}
.BlueButton:active {color:#f2f0f0; text-shadow:0 -1px rgba(34,25,25,0.6);}
.BlueButton{
border-color:#015E91;
background-color:#3693D5;
background:-moz-linear-gradient(center top , #54B1EB, #47A0E0 50%, #419FE1 50%, #3683D5);
background:-o-linear-gradient(top left, #54B1EB, #47A0E0 50%, #419FE1 50%, #3683D5);
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#54B1EB), to(#47A0E0), color-stop(.5,#419FE1),color-stop(.5,#3683D5));
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#54B1EB', endColorstr='#3683D5');
}
.BlueButton:hover{
border-color:#0366AD;
background-color:#3EA1D6;
background:-moz-linear-gradient(center top, #5EB4EA, #61A1EE 50%, #59A5EB 50%, #3691E6);
background:-o-linear-gradient(top left, #5EB4EA, #61A1EE 50%, #59A5EB 50%, #3691E6);
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#5EB4EA), to(#61A1EE), color-stop(.5,#59A5EB),color-stop(.5,#3691E6));
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5EB4EA', endColorstr='#3691E6');
}
.BlueButton:active{
border-color:#013B6A;
background-color:#3089C8;
background:-moz-linear-gradient(center top, #4B9CDD, #4189D5 50%, #3D8BD3 50%, #3093C8);
background:-o-linear-gradient(top left, #4B9CDD, #4189D5 50%, #3D8BD3 50%, #3093C8);
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(#4B9CDD), to(#4189D5), color-stop(.5,#3D8BD3),color-stop(.5,#3093C8));
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4B9CDD', endColorstr='#3093C8');
}
.BlueButton.Button18:hover{
box-shadow:0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(255, 255, 255, 0.35) inset, 0 0 10px rgba(82, 162, 235, 0.25);
-moz-box-shadow:0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(255, 255, 255, 0.35) inset, 0 0 10px rgba(82, 162, 235, 0.25);
-webkit-box-shadow:0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(255, 255, 255, 0.35) inset, 0 0 10px rgba(82, 162, 235, 0.25);
}
.BlueButton.Button18:active{
box-shadow:0 1px 2px rgba(34, 25, 25, 0.25) inset, 0 0 3px rgba(82, 202, 235, 0.35);
-moz-box-shadow:0 1px 2px rgba(34, 25, 25, 0.25) inset, 0 0 3px rgba(82, 202, 235, 0.35);
-webkit-box-shadow:0 1px 2px rgba(34, 25, 25, 0.25) inset, 0 0 3px rgba(82, 202, 235, 0.35);
}
</style>
<div class="demo">
<form id="thisForm" method="post" action="">
<table width="100%">
<tr>
<td class="tdcon">会员登录名:</td>
<td>
<input class="stext" type='text' name="userName" id="userName" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td class="tdcon">密码:</td>
<td>
<input class="stext" type="password" name="passWord" id="passWord" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td class="tdcon">再次输入密码:</td>
<td>
<input class="stext" type='password' name="passWordAgain" id="passWordAgain" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td class="tdcon">公司名称:</td>
<td>
<input class="stext" type='text' name="corpName" id="corpName" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td class="tdcon">手机号码:</td>
<td>
<input class="stext" type='text' name="sms" id="sms" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td class="tdcon">邮编:</td>
<td>
<input class="stext" type='text' name="email" id="email" value="" />
<div class="tipinfo"></div>
</td>
</tr>
<tr>
<td></td>
<td><button name="Submit" type="submit" class="Button BlueButton Button18">同意以下服务条款并注册</button></td>
</tr>
</table>
</form>
</div>
</body>
</html>