<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>jquery.validate.js ajax请求form表单验证</title> <style type="text/css"> #validate_error_message { color:#FF5353; } </style> </head> <body> <form id="validate"> <div> <input type="text" name="age" id="age"/> </div> <div id="validate_error_message"></div> <div class="btn-group"> <button type="submit" class="btn btn-primary">提交</button> </div> </form> <script src="vendor/jquery-1.9.0.min.js"></script> <script src="../jquery.validate.js"></script> <script> 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} 的值") }); //覆盖validator.defaults中的一些属性,jquery extend高级用法 jQuery.extend(jQuery.validator.defaults, { errorElement: "label" }); var validateRoles = { rules : { age : { required : true, maxlength : 60 } }, messages : { age: "提示信息我想放哪里就放哪里,提示信息样式也由我本身控制" }, errorPlacement: function (error, element) { console.log("css能够本身控制") error.appendTo($("#validate_error_message") ); //这里的element是录入数据的对象 } }; $("#validate").validate(validateRoles); $(".btn-primary").bind("click", function() { var submitForm = $("#validate"); console.log("dd") if (submitForm.valid() == false) { console.log("ajaxform表单验证就那么神奇地发生了"); return false; }else { return false; } }); </script> </body> </html>
如上代码中自定义错误信息地方,样式定都是经过jquery.extend实现,Jquery的扩展方法extend是咱们在写插件或者使用插件的过程当中经常使用的方法,因为扩展插件中的方法或者属性或者覆盖插件中的方法或者属性。javascript
经过valid()方法实现css
valid: function() { var valid, validator, errorList; if ( $( this[ 0 ] ).is( "form" ) ) { valid = this.validate().form(); } else { errorList = []; valid = true; validator = $( this[ 0 ].form ).validate(); this.each( function() { valid = validator.element( this ) && valid; if ( !valid ) { errorList = errorList.concat( validator.errorList ); } } ); validator.errorList = errorList; } return valid; }
//覆盖validator.defaults中的一些属性,jquery extend高级用法 jQuery.extend(jQuery.validator.defaults, { errorElement: "label" });
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} 的值") });
errorPlacement: function (error, element) { console.log("css能够本身控制") error.appendTo($("#validate_error_message") ); //这里的element是录入数据的对象 }
#validate_error_message { color:#FF5353; }
debug: true
http://www.runoob.com/jquery/jquery-plugin-validate.htmlhtml
errorPlacement: function (error, element) { element.focus(); error.appendTo($(".error_box")); //这里的element是录入数据的对象 }
errorPlacement: function (error, element) { var errMessage = $(".error_box").text(); //每次只显示一个错误 if (common.isEmpty(errMessage)) { element[0].focus(); error.appendTo($(".error_box")); //这里的element是录入数据的对象 } }
为何要检查域呢?有时候咱们项目中会使用一些自定义的下拉复选框等,这些一般须要经过自定义验证规则来实现,这时候咱们可能须要经过hidden来定制规则。jquery.validate.js在1.9之后 默认关闭了对hidden隐藏域的检查。java
//覆盖validator.defaults中的一些属性,jquery extend高级用法 jQuery.extend(jQuery.validator.defaults, { errorElement: "label", ignore: ""//检查隐藏域忽略 });
// 添加自定义验证,验证下拉,将自定义下拉的验证借挂在其余输入框,经过attr关联 jQuery.validator.addMethod("zcode_selected", function (value, element) { var $element = $(element);//dom对象转为jquery对象 var selectedId = $element.attr("selectedId"); value = $("#" + selectedId).find("i").attr("current-data-val") || "-1"; var flag = value !== "-1"; if (flag === false) { setTimeout(function () { $(".error_box").text(""); }, 3000); } return flag; }, "下拉不容许为空");