one(type, [data], fn)
概述
為每一個匹配元素的特定事件(像click)綁定一個一次性的事件處理函數。
在每個對象上,這個事件處理函數只會被執行一次。其他規則與bind()函數相同。這個事件處理函數會接收到一個事件對象,可以通過它來阻止(瀏覽器)默認的行為。如果既想取消默認的行為,又想阻止事件起泡,這個事件處理函數必須返回false
可以使用jq 自帶的屬性改變錯誤的顯示的位置,其中element是驗證未通過的當前表單元素,error為錯誤后的提示信息
$("#subscribeForm").validate({
errorPlacement : function(error, element) {
if (element.is(":radio"))
error.appendTo(element.parent());
else if (element.is(":checkbox"))
error.appendTo(element.parent().parent());
else
error.appendTo(element.parent().next());
}
rules : {username:required : true,maxlength : 20}
});
使用jq為我們自帶的屬性可以在不"破解原界面的情況下"方便的統一修改,希望我的回答能給你帶來幫助!
jQuery驗證框架(一) 可選項 (jQuery validation)
jQuery驗證框架
- <script type="text/javascript" src=js/jquery-1.3.2.min.js></script>
- <script type="text/javascript" src=js/jquery.validate.pack.js></script>
- <script type="text/javascript">
- $(document).ready(function(){
- $("#textForm").validate();
- });
- </script>
- <form class="cmxform" id="commentForm" method="get" action="">
- Name<input id="cname" name="name" size="25" class="required" minlength="2" />
- <input class="submit" type="submit" value="Submit"/>
- </form>
此文謹以以上js片段開始介紹jQuery Validation。
驗證從這個方法開始:validate( [options] )
一、可選項( options )
[1] debug 類型:Boolean 默認:false
說明:開啟調試模式。如果為true,表單不會提交,而且會在控制台顯示一些錯誤消息(需要Firebug或者Firebug lite)。當要阻止表單默認提交事件,嘗試去開啟它。
- $(".selector").validate({
- debug: true
- })
[2] submitHandler 類型:Callback 默認:default (native) form submit
說明:當表單通過驗證,提交表單。回調函數有個默認參數form
- $(".selector").validate({
- submitHandler: function(form) {
- // do other stuff for a valid form
- form.submit();
- }
- })
[3] invalidHandler 類型:Callback
說明:當未通過驗證的表單提交時,可以在該回調函數中處理一些事情。該回調函數有兩個參數:第一個為一個事件對象,第二個為驗證器(validator)
- $(".selector").validate({
- invalidHandler: function(form, validator) {
- var errors = validator.numberOfInvalids();
- if (errors) {
- var message = errors == 1
- ? 'You missed 1 field. It has been highlighted'
- : 'You missed ' + errors + ' fields. They have been highlighted';
- $("div.error span").html(message);
- $("div.error").show();
- } else {
- $("div.error").hide();
- }
- }
- })
[4] ignore 類型:Seletor
說明:當進行表單驗證時,過濾掉選擇器所選擇的表單。用了jQuery not方法( not() )。類型為submit和reset的表單總是被忽略的。
- $("#myform").validate({
- ignore: ".ignore"
- })
[5] rules 類型:Options 默認:rules are read from markup (classes, attributes, metadata)
說明:用 戶定義的鍵/值對規則。鍵為一個表單元素的 name屬性(或是一組單選/復選按鈕)、值為一個簡單的字符串或者由規則/參數對(rule/parameter)組成的一個對象。可以和 class/attribute/metadata 規則一起使用。每個規則可以指定一個依存的驗證前提條件。
- $(".selector").validate({
- rules: {
- // simple rule, converted to {required:true}
- name: "required",
- // compound rule
- email: {
- required: true,
- email: true
- }/*
- email: {
- depends: function(element) {
- return $("#contactform_email:checked")
- }
- }*/
- }
- })
[6] messages 類型:Options 默認:驗證方法默認使用的消息
說明:用 戶自定義的 鍵/值 對消息。鍵為一個表單元素的name屬性,值為該表單元素將要顯示的消息。該消息覆蓋元素的title屬性或者默認消息。消息可以是一個字符串或者一個回 調函數。回調函數必須在驗證器的作用域中調用,將規則參數作為回調函數的第一個參數,將該表單元素作為回調函數的第二個參數,且必須返回一個字符串類型的 消息。
- $(".selector").validate({
- rules: {
- name: "required",
- email: {
- required: true,
- email: true
- }
- },
- messages: {
- name: "Please specify your name",
- email: {
- required: "We need your email address to contact you",
- email: "Your email address must be in the format of name@domain.com"
- }
- }
- })
[7] groups 類型:Options
說明:指定錯誤消息分組。一個組由一個任意的組名作為鍵,一個由空白符分割的表單元素name屬性列表作為值。用errorPlacement定義組消息的存放位置。
- $("#myform").validate({
- groups: {
- username: "fname lname"
- },
- errorPlacement: function(error, element) {
- if (element.attr("name") == "fname"
- || element.attr("name") == "lname" )
- error.insertAfter("#lastname");
- else
- error.insertAfter(element);
- },
- debug:true
- })
[8] onsubmit 類型:Boolean 默認:true
說明:提交時驗證表單。當設置為false時,只能用其它的事件驗證。
- $(".selector").validate({
- onsubmit: false
- })
[9] onfocusout 類型:Boolean 默認:true
說明:焦點離開時驗證(單選/復選按鈕除外)。如果表單中沒有輸入任何內容,所有的規則將被跳過,除非該表單已經被標記為無效的。
- $(".selector").validate({
- onfocusout: false
- })
[10] onkeyup 類型:Boolean 默認:true
說明:當鍵盤按鍵彈起時驗證。只要表單元素沒有被標記成無效的,不會有反應。另外,所有的規則將在每次按鍵彈起時驗證。
- $(".selector").validate({
- onkeyup: false
- })
[11] onclick 類型:Boolean 默認:true
說明:鼠標點擊驗證針對單選和復選按鈕。
- $(".selector").validate({
- onclick: false
- })
[12] focusInvalid 類型:Boolean 默認:true
說明:當驗證無效時,焦點跳到第一個無效的表單元素。當為false時,驗證無效時,沒有焦點響應。
- $(".selector").validate({
- focusInvalid: false
- })
[12] focusCleanup 類型:Boolean 默認:false
說明:如果為true,當表單得到焦點時,移除在該表單上的errorClass並隱藏所有錯誤消息。避免與focusInvalid一起使用。
- $(".selector").validate({
- focusCleanup: true
- })
[13] meta 類型:String
說明:如果想使用其它插件來使用元數據驗證規則,得指定相應的元數據對象。
- $("#myform").validate({
- meta: "validate"
- })
- <input type="text" name="email" class="{validate:{ required: true, email:true}}" />
[14] errorClass 類型:String 默認:"error"
說明:用此設定的樣式來定義錯誤消息的樣式。
- $(".selector").validate({
- errorClass: "invalid"
- })
[15] validClass 類型:String 默認:"valid"
說明:設定當驗證通過時,消息顯示的樣式。
- $(".selector").validate({
- validClass: "success"
- })
[16] errorElement 類型:String 默認:"label"
說明:用html元素類型創建錯誤消息的容器。默認的"label"有個優點就是能在錯誤消息與無效表單之間用for屬性建立有意義的聯系(一個常常使用的,而不管表單元素是什么的)。
- $(".selector").validate({
- errorElement: "em"
- })
[17] wrapper 類型:Boolean
說明:用一個指定的元素將錯誤消息包圍。與errorLabelContainer一起創建一個錯誤消息列表非常有用。
- $(".selector").validate({
- wrapper: "li"
- })
[18] errorLabelContainer 類型:Selector
說明:錯誤消息標簽的容器。
- $("#myform").validate({
- errorLabelContainer: "#messageBox",
- wrapper: "li"
- })
[19] errorContainer 類型:Selector
說明:錯誤消息的容器。
- $("#myform").validate({
- errorContainer: "#messageBox1, #messageBox2",
- errorLabelContainer: "#messageBox1 ul",
- wrapper: "li", debug:true,
- submitHandler: function() { alert("Submitted!") }
- })
[20] showErrors 類型:Callback 默認:None,內置的顯示消息
說明:自 定義消息顯示的句柄。該回調函數有兩個參數,第一 個為errorMap,第二個參數為errorList,在validator對象的上下文中調用。參數只包含那些經過onblur/onkeyup驗證 的表單元素,也有可能是單個元素。除此之外,你還可以用this.defaultShowErrors()觸發默認的行為。
- $(".selector").validate({
- showErrors: function(errorMap, errorList) {
- $("#summary").html("Your form contains "
- + this.numberOfInvalids()
- + " errors, see details below.");
- this.defaultShowErrors();
- }
- })
[21] errorPlacement 類型:Callback 默認:緊跟在無效表單后的標簽中
說明:用戶自定義錯誤標簽的顯示位置。第一個參數:一個作為jQuery對象的錯誤標簽,第二個參數為:一個作為jQuery對象的未通過驗證的表單元素。
- $("#myform").validate({
- errorPlacement: function(error, element) {
- error.appendTo( element.parent("td").next("td") );
- },
- debug:true
- })
[22] success 類型:String,Callback
說明:如果指定它,當驗證通過時顯示一個消息。如果是String類型的,則添加該樣式到標簽中,如果是一個回調函數,則將標簽作為其唯一的參數。
- $("#myform").validate({
- //success: "valid",
- success: function(label) {
- label.addClass("valid").text("Ok!")
- }
- })
[23] highlight 類型:Callback 默認:添加errorClass到表單元素
說明:將未通過驗證的表單元素設置高亮。
- $(".selector").validate({
- highlight: function(element, errorClass) {
- $(element).fadeOut(function() {
- $(element).fadeIn()
- })
- }
- })
[24] unhighlight 類型:Callback 默認:移除errorClass
說明:與highlight操作相反
- $(".selector").validate({
- highlight: function(element, errorClass) {
- $(element).addClass(errorClass);
- $(element.form).find("label[for=" + element.id + "]")
- .addClass(errorClass);
- },
- unhighlight: function(element, errorClass) {
- $(element).removeClass(errorClass);
- $(element.form).find("label[for=" + element.id + "]")
- .removeClass(errorClass);
- }
- });
[25] ignoreTitle 類型:Boolean 默認:false
說明:設置它用來跳過錯誤消息對title屬性的引用,避免Google工具欄引起的沖突。
- $(".selector").validate({
- ignoreTitle: true
- })
