七、注意事項(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)容: