validate()的方法和选项
除了默认的验证规则外,jquery.validate.js还提供了大量的其他属性和方法供开发者使用,比如调试属性,错误提示位置一系列比较有用的选项。
index.html:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>知问前端</title> <script type="text/javascript" src="jquery-1.12.3.js"></script> <script type="text/javascript" src="jquery-ui.js"></script> <script type="text/javascript" src="jquery.validate.js"></script> <script type="text/javascript" src="index.js"></script> <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico" /> <link rel="stylesheet" type="text/css" href="jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <form id="reg" action="123.html"> <p class="myerror"></p> <p>账号:<input type="text" name="user" /></p> <p>密码:<input type="text" name="pass" id="pass" /></p> <p><input type="submit" value="提交" /></p> </form> </body> </html>
jQuery代码:
$(function() { $("#reg").validate({ rules:{ user:{ required:true, minlength:2, //rangelength:[5,10] }, pass:{ required:true, minlength:6 } }, messages:{ user:{ required:"账号不得为空!", minlength:"账号不得小于{0}位!", //minlength:jQuery.format("账号不得小于{0}位!") //加了之后反而丧失作用 //minlength:$.format("账号不得小于{0}位!") //同上 //rangelength:"帐号限制在{0}-{1}位!" }, pass:{ required:"密码不得为空!", minlength:"密码不得小于{0}位!" } } }); });
开启调试模式禁止提交:
$('#reg').validate({
debug : true
});
设置调试模式为默认,可以禁止多个表单提交:
//设置调试模式为默认,可以禁止多个表单提交, //所有默认行为都可以在这里设置 $.validator.setDefaults({ debug:true });
使用其他方式代替默认提交:
$(function() { $("#reg").validate({ //使用其他方式代替默认提交 submitHandler:function(form) { //可以执行ajax提交,并且无须debug:true阻止提交了 //alert(form); // [object HTMLFormElement] //当验证成功后执行,而且阻止了默认提交 //一般用于ajax提交使用 //$(".myerror").hide(); alert("验证成功,准备提交!"); } }); });
忽略某个字段验证:
$('#reg').validate({
ignore:"#pass"
});
群组错误提示:
$('#reg').validate({
groups:{
myerror:"user pass"
}
});
显示群组的错误提示:
$('#reg').validate({
focusInvalid:false, //使得第一次表单提交之后,焦点不在第一个input控件上
//error是user、pass两个错误对象,element是<input>控件的DOM对象
errorPlacement:function(error,element) {
//alert(element[0]); //[object HTMLInputElement]
//alert(error); //[object Object]
$.each(error, function(index,value) {
//alert(index + " " + value); //0 [object HTMLLabelElement]
//alert(index + " " + $(value).html());
$(".myerror").html($(".myerror").html() + $(value).html());
});
}
});
群组错误提示,分开:
$('#reg').validate({
groups:{
error_user:"user",
error_pass:"pass"
}
});
将群组的错误指定存放位置:
$('#reg').validate({
errorPlacement:function(error,element) {
error.appendTo(".myerror");
}
});
设置错误提示的class名以及设置错误提示的标签:
$('#reg').validate({
errorPlacement:function(error,element) {
error.appendTo(".myerror");
},
//设置错误提示的class名
errorClass:"abc", //默认为error
//设置错误提示的标签
errorElement:"p", //默认是<label>标签包裹
});
将index.html的<p class="myerror"></p>修改为:<ol class="myerror"></ol>
$('#reg').validate({
errorPlacement:function(error,element) {
error.appendTo(".myerror");
},
//统一包裹错误提示
errorLabelContainer:"ol.myerror",
wrapper:"li"
});
设置成功后加载的class以及使用方法加载class并添加文本:
style.css:
.valid { background: url(img/reg_succ.png) no-repeat right; } .abc { border: 5px solid green; }
jQuery代码如下:
$('#reg').validate({
//加载成功后,<input>控件后的<label>控件加载class
success:"abc", //成功后加载(即输入正确后),<input>控件的class默认为valid
//使用方法加载class并添加文本
success:function(label) {
label.addClass("abc").text("ok");
}
});
高亮显示有错误的元素,变色式:
$('#reg').validate({
//高亮显示有错误的元素,变色式
highlight:function(element, errorClass) {
$(element).css("border","1px solid red");
},
//恢复默认
unhighlight:function(element, errorClass) {
$(element).css("border","1px solid #ccc");
}
});
表单提交时获取信息:
$("#reg").validate({
//使用其他方式代替默认提交
submitHandler:function(form) {
//可以执行ajax提交,并且无须debug:true阻止提交了
//alert(form); // [object HTMLFormElement]
//当验证成功后执行,而且阻止了默认提交
//一般用于ajax提交使用
$(".myerror").hide();
alert("验证成功,准备提交!");
},
//有错误的时候才执行,一旦没有错误就不会执行了
invalidHandler:function(event, validator) {
//alert(validator.numberOfInvalids()); //2条错误信息
var error = validator.numberOfInvalids();
if(error) {
$(".myerror").html("您有"+error+"条错误信息!");
}
//if(error == 0) $(".myerror").hide(); //错误,不能这样来判断
}
});
获取错误提示句柄,不用提交及时获取值,达到的效果同上:
$("#reg").validate({
//使用其他方式代替默认提交
submitHandler:function(form) {
//可以执行ajax提交,并且无须debug:true阻止提交了
//alert(form); // [object HTMLFormElement]
//当验证成功后执行,而且阻止了默认提交
//一般用于ajax提交使用
alert("验证成功,准备提交!");
},
showErrors:function(errorMap, errorList) {
//alert("123");
//alert(errorMap); //[object Object]
//$.each(errorMap, function(index, value) {
//alert(index + " " + value); //user 账号不得为空!
//});
//alert(errorMap.user);
//alert(errorList[0].element); //[object HTMLInputElement],当前错误的表单元素
//alert(errorList[0].message); //当前错误的表单元素
var error = this.numberOfInvalids();
//alert(error);
if(error) {
$(".myerror").html("您有"+error+"条错误信息!");
} else {
$(".myerror").hide();
}
this.defaultShowErrors(); //执行默认错误
},
});