2025-05-23

Html代碼

<script type="text/javascript" src="js/jquery-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';  

        $("p.error span").html(message);  

        $("p.error").show();  

      } else {  

        $("p.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定義組消息的存放位置。

Js代碼

$("#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時,隻能用其它的事件驗證。

Js代碼

$(".selector").validate({  
   onsubmit: false 
}) 
[9]  onfocusout      類型:Boolean    默認:true

      說明:焦點離開時驗證(單選/復選按鈕除外)。如果表單中沒有輸入任何內容,所有的規則將被跳過,除非該表單已經被標記為無效的。

Js代碼

$(".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 

}) 

(二)插件方法 (jQuery validation)

文章分類:Web前端

 [1]  validate( [options] )           返回:Validator

      說明:見第一部分 [2]  valid()      返回:Boolean

      說明:檢查表單是否已通過驗證。

$("#myform").validate();  

$("a.check").click(function() {  

  alert("Valid: " + $("#myform").valid());  

  return false;  

}); 

[3]  rules()       返回:Options

      說明:返回一個表單元素的驗證規則。有幾個方法定義驗證規則:

在表單元素的class屬性中定義驗證規則(推薦的方法)。
通過指定驗證方法的屬性(推薦的方法)。
可以通過元數據(metadata)插件來定義元數據驗證規則。
可以通過指定validate()方法的rules選項。
alert($("#password").rules()["required"]); 

 

[4]  rules( "add", rules )       返回:Options

      參數"add"     類型:String

      參數  rules     類型:Options   要添加的規則,與validate方法中的驗證規則一致。

      說明:添加規則到匹配的表單元素,返回該元素的所有驗證規則,需要先執行$("form").validate()。在rules中也可以添加用戶自定義的消息對象。

$("#myinput").rules("add", {  

 required: true,  

 minlength: 2,  

 messages: {  

   required: "Required input",  

   minlength: jQuery.format("Please, at least {0} characters are necessary")  

 }  

}); 

[5]  rules( "remove", [rules] )       返回:Options

      參數"remove"     類型:String

      參數  rules (Options)    類型:Options   用空白符分割的驗證規則。隻操作通過rules選項或rules("add")指定的驗證規則。

      說明:從第一個匹配的表單元素中移除指定的驗證規則,並返回該元素所有的驗證規則。

$("#myinput").rules("remove");  

$("#myinput").rules("remove", "min max"); 

[6]  removeAttrs( attributes )       返回:Options

      參數  attributes      類型:String  用空白符分割的屬性列表

      說明:從第一個匹配的表單元素中刪除指定的屬性並返回它們。

$("#skip").click(function() {  

  var rules = $("#myinput").removeAttrs("min max");  

  $("#myform).submit();  

  $("#myinput").attr(rules);  

}); 

 

(三、四)選擇器及實用工具 (jQuery validation)

文章分類:Web前端

[1]  :blank       返回:Array<Element>

      說明:匹配所有空值的表單元素。沒有任何值或都空白符(whitespace)都被認為是空值。

                  它是由 jQuery.trim(value).length == 0 來判斷的。

$("input:blank").css("background-color", "#bbbbff"); 

 

[2]  :filled       返回:Array<Element>

      說明:匹配所有不為空的表單元素。任何值都可以認為是已輸入的,但隻有空白符的值除外。

                  它是由 jQuery.trim(value).length > 0 來判斷的。

$("input:filled").css("background-color", "#bbbbff"); 

 

[3]  :unchecked       返回:Array<Element>

      說明:匹配所有未選擇的表單元素。反向操作為 :checked

function countUnchecked() {  

    var n = $("input:unchecked").length;  

    $("p").text(n + (n == 1 ? " is" : " are") + " unchecked!");  

}  

countUnchecked();  

$(":checkbox").click(countUnchecked); 

 

四、實用工具(Utilities)

jQuery.validator.format( template, [argument], [argumentN…] )       返回:String

      參數 template     類型:String    要格式化的字符串

      參數 argument (Optional)    類型:String, Array<String>    用字符串或字符串數組(對應索引的元素)填充第一個占位符

      參數 argumentN… (Optional)    類型:String    填充第二個或之後的占位符。

      說明:用參數來填充{n}占位符。除template外的一個或多個參數都可以用來填充相應的占位符。

$(document).ready(function(){  

    $("button").click(function () {  

       var str = "Hello {0}, this is {1}";  

       alert("'" + str + "'");  

       str = jQuery.validator.format(str, "World", "Bob");  

       //str = $.validator.format(str, ["koala","oo"]);  

       alert("'" + str + "'");  

    });  

}); 

(五)驗證器 (jQuery validation)

            validate方法返回的驗證器對象( Validator Object) 有一些公用的方法。你可以用來觸發驗證程序或改變表單(form)的內容。驗證器對象有更多的方法,不過隻有文檔中給出的這些方法是專為使用而設計的。 (一)驗證器方法(Validator methods)

[1]  form()       返回:Boolean

      說明:驗證表單是否通過驗證,若通過驗證則返回true,反之返回false。這個方法在正常的提交事件(submit event)觸發,它返回一個結果。

$("#myform").validate().form(); 

 

[2]  element( element )       返回:Boolean

      參數 element      類型:Selector    驗證表單中的一個需要驗證的表單元素。

      說明:驗證單個表單元素是否通過驗證,若通過驗證則返回true,反之返回false。這個方法在正常的焦點離開事件(blur)或按鍵彈起(keyup)時觸發,它返回一個結果。

$("#myform").validate().element( "#myselect" ); 

 

[3]  resetForm( )       返回:undefined

      說明:重置表單。

                  恢復表單元素到原來的值(需要form插件支持),移除無效驗證的樣式並隱藏錯誤消息。

                  (…貌似隻有在IE下才可以移除樣式)

var validator = $("#myform").validate();  

validator.resetForm(); 

 

[4]  addClassRules( rules )       返回:undefined

      參數 rules     類型:Options    樣式類名-規則表。

      說明:添加一個復合的樣式驗證方法。對於重構通用的聯合規則非常有用。

jQuery.validator.addClassRules({  

  name: {  

    required: true,  

    minlength: 2  

  },  

  zip: {  

    required: true,  

    digits: true,  

    minlength: 5,  

    maxlength: 5  

  }  

(六)內置驗證方法 (jQuery validation)

 [1]  required( )       返回:Boolean

      說明:讓表單元素必須填寫(選擇)。

                  如果表單元素為空(text input)或未選擇(radio/checkbox)或選擇瞭一個空值(select)。

                  作用於text inputs, selects, checkboxes and radio buttons.

                  當select提供瞭一個空值選項<option value="">Choose…</option>則強迫用戶去選擇一個不為空的值。

$("#myform").validate({  

  rules: {  

    fruit: "required" 

  }  

}); 

 

[2]  required( dependency-expression )       返回:Boolean

      參數 dependency-expression     類型:String    在form上下文中的一個表達式( String ),表單元素是否需要填寫依賴於該表達式返回一個或多個元素。

      說明:讓表單元素必須填寫(選擇),依賴於參數的返回值。

                  表達式中像#foo:checked, #foo:filled, #foo:visible這樣的選擇過濾器將經常用到。

$("#myform").validate({  

  rules: {  

    details: {  

      required: "#other:checked" 

    }  

  }, debug:true 

});  

$("#other").click(function() {  

   $("#details").valid();  

}); 

 

[3]  required( dependency-callback )       返回:Boolean

      參數 dependency-callback     類型:Callback   該回函數以待驗證表單元素作為其唯一的參數。當該回調函數返回true,則該表單元素是必須的。

      說明:讓表單元素必須填寫(選擇),依賴於參數的返回值。

                  表達式中像#foo:checked, #foo:filled, #foo:visible這樣的選擇過濾器將經常用到。

$("#myform").validate({  

  rules: {  

    age: {  

      required: true,  

      min: 3  

    },  

    parent: {  

      required: function(element) {  

        return $("#age").val() < 13;  

      }  

    }  

  }  

});  

$("#age").blur(function() {  

    $("#parent").valid();  

}); 

 

[4]  remote( options )       返回:Boolean

      參數 options      類型:String, Options    請求服務器端資源的url(String)。或$.ajax()方法中的選項(Options)。

      說明:請求服務器端資源驗證。

                  服務器端的資源通過$.ajax (XMLHttpRequest)獲取key/value對,響應返回true則表單通過驗證。

$("#myform").validate({  

  rules: {  

    email: {  

      required: true,  

      email: true,  

      remote: "check-email.php" 

    }  

  }  

}); 

 

[5]  minlength( length )       返回:Boolean

      參數 length      類型:Integer    至少需要多少個字符數。

      說明:確保表單元素滿足給定的最小字符數。

                  在文本框(text input)中輸入的字符太少、沒有選中足夠的復選框(checkbox)、一個選擇框(select)中沒有選中足夠的選項。這以上三種情況中該方法返回false。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      minlength: 3  

    }  

  }  

}); 

 

[6]  maxlength( length )       返回:Boolean

      參數 length      類型:Integer    允許輸入的最大字符數。

      說明:確保表單元素的文本不超過給定的最大字符數。

                  在文本框(text input)中輸入的字符太多、選擇太多的復選框(checkbox)、一個選擇框(select)中沒有選中太多的選項。這以上三種情況中該方法返回false。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      maxlength: 4  

    }  

  }  

}); 

 

[7]  rangelength( range )       返回:Boolean

      參數 range      類型:Array<Integer>    允許輸入的字符數范圍。

      說明:確保表單元素的文本字符數在給定的范圍當中。

                  在文本框(text input)中輸入的字符數不在給定范圍內、選擇的復選框(checkbox)不在給在的范圍內、一個選擇框(select)選中的選項不在給定的范圍內。這以上三種情況中該方法返回false。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      rangelength: [2, 6]  

    }  

  }  

}); 

 

[8]  min( value )       返回:Boolean

      參數 value      類型:Integer    需要輸入的最小整數。

      說明:確保表單元素的值大於等於給定的最小整數。

                  該方法隻在文本輸入框(text input)下有效。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      min: 13  

    }  

  }  

}); 

 

[9]  max( value )       返回:Boolean

      參數 value      類型:Integer    給定的最大整數。

      說明:確保表單元素的值小於等於給定的最大整數。

                  該方法隻在文本輸入框(text input)下有效。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      max: 23  

    }  

  }  

}); 

 

[10]  range( range )       返回:Boolean

      參數 range     類型:Array<Integer>    給定的整數范圍。

      說明:確保表單元素的值在給定的范圍當中。

                  該方法隻在文本輸入框(text input)下有效。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      range: [13, 23]  

    }  

  }  

}); 

 

[11]  email( )       返回:Boolean

      說明:確保表單元素的值為一個有效的email地址。

                  如果值為一個有效的email地址,則返回true。該方法隻在文本輸入框(text input)下有效。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      email: true 

    }  

  }  

}); 

 

[12]  url( )       返回:Boolean

      說明:確保表單元素的值為一個有效的URL地址(http://www.mydomain.com)。

                  如果值為一個有效的url地址,則返回true。該方法隻在文本輸入框(text input)下有效。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      url: true 

    }  

  }  

}); 
 

[13]  date( )  dateISO( )  dateDE( )      返回:Boolean

      說明:用來驗證有效的日期。這三個函數分別驗證的日期格式為(mm/dd/yyyy)、(yyyy-mm-dd,yyyy/mm/dd)、(mm.dd.yyyy)。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      date: true 

      /*dateISO: true 

        dateDE: true*/ 

    }  

  }  

}); 

 

[14]  number( )  numberDE()      返回:Boolean

      說明:用來驗證小數。number()的小數點為圓點( . ),numberDE()的小數點為英文逗號( , )。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      number: true 

      //numberDE: true  

    }  

  }  

}); 

 

[15]  digits()      返回:Boolean

      說明:確保文本框中的值為數字。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      digits: true 

    }  

  }  

}); 

 

[16]  digits()      返回:Boolean

      說明:確保文本框中的值為數字。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      digits: true 

    }  

  }  

}); 

 

[17]  accept( [extension] )       返回:Boolean

      參數 extension(Optional)     類型:String    允許的文件後綴名,用"|"或","分割。默認為"png|jpe?g|gif"

      說明:確保表單元素接收給定的文件後綴名的文件。如果沒有指定參數,則隻有圖片是允許的(png,jpeg,gif)。

$("#myform").validate({  

  rules: {  

    field: {  

      required: true,  

      accept: "xls|csv" 

    }  

  }  

}); 

 

[18]  equalTo( other )       返回:Boolean

      參數 other      類型:Selector    要與當前值比較的另一個表單元素。

      說明:確保兩個表單元素的值是一致的。

$("#myform").validate({  

  rules: {  

    password: "required",  

    password_again: {  

      equalTo: "#password" 

    }  

  }  

}); 

 

(七)註意事項 (jQuery validation)

[1]復雜的name屬性值

    當使用rules選項時,如果表單的name屬性值包含有非法的javascript標識符,必須將name值加上引號。

$("#myform").validate({  

  rules: {  

    // no quoting necessary  

    name: "required",  

    // quoting necessary!  

    "user[email]": "email",  

    // dots need quoting, too!  

    "user.address.street": "required" 

  }  

}); 

[2]重構規則

    不論什麼時候,當你的表單中的多個字段含有相同的驗證規則及驗證消息,重構規則可以減少很多重復。使用 addMethod 和 addClassRules 將非常有效果。 

    假使已經重構瞭如下規則:

// alias required to cRequired with new message  

$.validator.addMethod("cRequired", $.validator.methods.required,  

  "Customer name required");  

// alias minlength, too  

$.validator.addMethod("cMinlength", $.validator.methods.minlength,   

  // leverage parameter replacement for minlength, {0} gets replaced with 2  

  $.format("Customer name must have at least {0} characters"));  

// combine them both, including the parameter for minlength  

$.validator.addClassRules("customer", { cRequired: true, cMinlength: 2 }); 

 

    那麼使用的時候如下:

<input name="customer1" class="customer" /> 

<input name="customer2" class="customer" /> 

<input name="customer3" class="customer" /> 

[3]驗證消息

    當驗證瞭一個無效的表單元素,驗證消息顯示在用戶面前。這些消息是從哪裡來的呢?有三個途徑來取得驗證消息。

        1.通過待驗證表單元素的title屬性

        2.通過默認的驗證消息

        3.通過插件設置(messages選項)

    這三種途徑的優先順序為:3 > 1 > 2

  

[4]驗證消息與Google工具欄的沖突

    有時候驗證消息會與Goole工具欄的AutoFill插件沖突。AutoFill通過替換表單元素的title屬性,以顯示提示消息。此時,驗證消息如果獲取的是title屬性值,那麼就得不到我們預期想要得到的結果。當文檔載入時,可以通過如下方法避免沖突。

$("input.remove_title").attr("title", ""); 
[5]表單提交

    默認地,表單驗證失敗時阻止表單的提交,當驗證通過,表單提交。當然,也可以通過submitHandler來自定義提交事件。

    將提交按鈕的class屬性設置成cancel,在表單提交時可以跳過驗證。

<input type="submit" name="submit" value="Submit" />  

<input type="submit" class="cancel" name="cancel" value="Cancel" /> 

 

    下面這段代碼將循環提交表單:

$("#myform").validate({  

 submitHandler: function(form) {  

   // some other code maybe disabling submit button  

   // then:  

   $(form).submit();  

 }  

}); 

 

    $(form).submit() 觸發瞭另外一輪的驗證,驗證後又去調用submitHandler,然後就循環瞭。可以用 form.submit() 來觸發原生的表單提交事件。

$("#myform").validate({  

 submitHandler: function(form) {  

   form.submit();  

 }  

}); 

(八)應用實例 (jQuery validation)

[1] 驗證頁面

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 

<html> 

  <head> 

    <title>jquery驗證框架</title> 

    <link rel="stylesheet" type="text/css" href="css/index.css"> 

    <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" src=js/jquery.form.js></script> 

    <script type="text/javascript" src=js/valid.js></script> 

    <style type="text/css"> 

        label { width: 10em; float: left; }  

        label.haha {color: red; padding-left: 18px; vertical-align: top;width: 196px; background: url("images/unchecked.gif") no-repeat;}  

        input.haha { border: 1px solid red; }  

        label.valid {background: url("images/checked.gif") no-repeat; color: #065FB9;}  

        input.focus { border: 2px solid green; }  

        ul li{ display: block;}  

    </style> 

  </head> 

    

  <body> 

    

  <p id="form_con"> 

        <form class="cmxform" id="myform" method="post" action=""> 

            <table cellspacing="0" cellpadding="0"> 

                <tbody> 

                    <tr> 

                        <td>用戶名</td> 

                        <td><input type="text" name="username" class="required" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>密碼</td> 

                        <td><input id="password" type="password" name="firstpwd" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>驗證密碼</td> 

                        <td><input type="password" name="secondpwd" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>性別</td> 

                        <td><input id="sex" type="radio" name="sex" />男<input type="radio" name="sex" />女</td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>年齡</td> 

                        <td><input type="text" name="age" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>郵箱</td> 

                        <td><input type="text" name="email" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>個人網頁</td> 

                        <td><input type="text" name="purl" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>電話</td> 

                        <td><input type="text" name="telephone" /></td> 

                        <td></td> 

                    </tr> 

                    <tr> 

                        <td>附件</td> 

                        <td><input type="file" name="afile"/></td> 

                        <td></td> 

                    </tr> 

                    <tr><td colspan="3" ><input type="submit" name="submit" value="提交" /><button>重置</button></td></tr> 

                </tbody>            

            </table> 

        </form> 

  </p>    

  </body> 

</html> 

 

[2] 驗證js

$(function(){  

    var validator = $("#myform").validate({  

        debug: true,       //調試模式取消submit的默認提交功能  

        errorClass: "haha",//默認為錯誤的樣式類為:error  

        focusInvalid: false,  

        onkeyup: false,  

        submitHandler: function(form){   //表單提交句柄,為一回調函數,帶一個參數:form  

            alert("提交表單");  

            //form.submit();   提交表單  

        },  

        rules: {           //定義驗證規則,其中屬性名為表單的name屬性  

            username: {  

                required: true,  

                minlength: 2,  

                remote: "uservalid.jsp"  //傳說當中的ajax驗證  

            },  

            firstpwd: {  

                required: true,  

                //minlength: 6  

                rangelength: [6,8]  

            },  

            secondpwd: {  

                required: true,  

                equalTo: "#password" 

            },  

            sex: {  

                required: true 

            },  

            age: {  

                required: true,  

                range: [0,120]  

            },  

            email: {  

                required: true,  

                email: true 

            },  

            purl: {  

                required: true,  

                url: true 

            },  

            afile: {  

                required: true,  

                accept: "xls,doc,rar,zip" 

            }  

        },  

        messages: {       //自定義驗證消息  

            username: {  

                required: "用戶名是必需的!",  

                minlength: $.format("用戶名至少要{0}個字符!"),  

                remote: $.format("{0}已經被占用")  

            },  

            firstpwd: {  

                required: "密碼是必需的!",  

                rangelength: $.format("密碼要在{0}-{1}個字符之間!")  

            },  

            secondpwd: {  

                required: "密碼驗證是必需的!",    

                equalTo: "密碼驗證需要與密碼一致" 

            },  

            sex: {  

                required: "性別是必需的" 

            },  

            age: {  

                required: "年齡是必需的",  

                range: "年齡必須介於{0}-{1}之間" 

            },  

            email: {  

                required: "郵箱是必需的!",  

                email: "請輸入正確的郵箱地址(例如 myemail@163.com)" 

            },  

            purl: {  

                required: "個人主頁是必需的",  

                url: "請輸入正確的url格式,如 " 

            },  

            afile: {  

                required: "附件是必需的!",  

                accept: "隻接收xls,doc,rar,zip文件" 

            }  

        },  

        errorPlacement: function(error, element) {  //驗證消息放置的地方  

            error.appendTo( element.parent("td").next("td") );  

        },  

        highlight: function(element, errorClass) {  //針對驗證的表單設置高亮  

            $(element).addClass(errorClass);  

        },  

        success: function(label) {    

                    label.addClass("valid").text("Ok!")    

            }    

          

        /*, 

        errorContainer: "#error_con",               //驗證消息集中放置的容器 

        errorLabelContainer: "#error_con ul",       //存放消息無序列表的容器 

        wrapper: "li",                              //將驗證消息用無序列表包圍 

        validClass: "valid",                        //通過驗證的樣式類 

        errorElement: "em",                         //驗證標簽的名稱,默認為:label 

        success: "valid"                            //驗證通過的樣式類 

        */ 

    });  

    $("button").click(function(){  

        validator.resetForm();  

    });  

    //alert($("#password").rules()["required"]);  

    //validator.showErrors({"username": "用戶名是必需的"});  

    /*$("button").click(function () { 

        var str = "Hello {0}, this is {1}"; 

        alert("'" + str + "'"); 

        str = $.validator.format(str, ["koala","oo"]); 

        alert("'" + str + "'"); 

    });*/ 

              

});  

 

[3] 遠程驗證程序

<%@ page language="java" import="java.io.PrintWriter" pageEncoding="gb2312"%><%  

    String username = request.getParameter("username");  

    PrintWriter pw = response.getWriter();  

    try{  

        if(username.toLowerCase().equals("admin")){  

            pw.println("true");  

        }else{  

            pw.println("false");  

        }  

    }catch(Exception ex){  

        ex.getStackTrace();  

    }finally{  

        pw.flush();  

        pw.close();  

    }  

%> 

摘自  張毅☆.Net★Java軟件聯盟 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *