<!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; }, "下拉不容許爲空");