七、注意事項(xiàng)

[1]復(fù)雜的name屬性值
    當(dāng)使用rules選項(xiàng)時(shí),如果表單的name屬性值包含有非法的javascript標(biāo)識(shí)符,必須將name值加上引號(hào)。
Js代碼

    $("#myform").validate({  
      rules: {  
        // no quoting necessary  
        name: "required",  
        // quoting necessary!  
        "user[email]": "email",  
        // dots need quoting, too!  
        "user.address.street": "required"  
      }  
    });  



[2]重構(gòu)規(guī)則
    不論什么時(shí)候,當(dāng)你的表單中的多個(gè)字段含有相同的驗(yàn)證規(guī)則及驗(yàn)證消息,重構(gòu)規(guī)則可以減少很多重復(fù)。使用 addMethod 和 addClassRules 將非常有效果。  
    假使已經(jīng)重構(gòu)了如下規(guī)則:
Js代碼

    // 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 });  


    那么使用的時(shí)候如下:
Html代碼

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



[3]驗(yàn)證消息
    當(dāng)驗(yàn)證了一個(gè)無效的表單元素,驗(yàn)證消息顯示在用戶面前。這些消息是從哪里來的呢?有三個(gè)途徑來取得驗(yàn)證消息。
        1.通過待驗(yàn)證表單元素的title屬性
        2.通過默認(rèn)的驗(yàn)證消息
        3.通過插件設(shè)置(messages選項(xiàng))
    這三種途徑的優(yōu)先順序?yàn)椋? > 1 > 2
   
[4]驗(yàn)證消息與Google工具欄的沖突
    有時(shí)候驗(yàn)證消息會(huì)與Goole工具欄的AutoFill插件沖突。AutoFill通過替換表單元素的title屬性,以顯示提示消息。此時(shí),驗(yàn)證消息如果獲取的是title屬性值,那么就得不到我們預(yù)期想要得到的結(jié)果。當(dāng)文檔載入時(shí),可以通過如下方法避免沖突。
Js代碼

    $("input.remove_title").attr("title", "");  



[5]表單提交
    默認(rèn)地,表單驗(yàn)證失敗時(shí)阻止表單的提交,當(dāng)驗(yàn)證通過,表單提交。當(dāng)然,也可以通過submitHandler來自定義提交事件。
    將提交按鈕的class屬性設(shè)置成cancel,在表單提交時(shí)可以跳過驗(yàn)證。
Js代碼

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


    下面這段代碼將循環(huán)提交表單:
Java代碼

    $("#myform").validate({  
     submitHandler: function(form) {  
       // some other code maybe disabling submit button  
       // then:  
       $(form).submit();  
     }  
    });  


    $(form).submit() 觸發(fā)了另外一輪的驗(yàn)證,驗(yàn)證后又去調(diào)用submitHandler,然后就循環(huán)了。可以用 form.submit() 來觸發(fā)原生的表單提交事件。
Java代碼

    $("#myform").validate({  
     submitHandler: function(form) {  
       form.submit();  
     }  
    }); 
jQuery相關(guān)內(nèi)容: