jQuery的驗證插件鉤與事件處理程序的形式submit
事件它調用其validate()
函數在提交之前驗證表單,從而防止在驗證失敗時提交表單。
如果您使用jQuery爲每個表單掛接了submit
事件,並在表單底部執行它,它將添加您自己的處理程序在插件處理程序之前執行。這樣,您可以自己調用表單上的valid()
函數,並在完成表單驗證之後運行您想要的任何自定義代碼。插件的valid()
函數調用窗體上的validate()
函數,然後返回一個布爾值表示成功/失敗。如果您不關心成功/失敗,則可直接致電validate()
而不是致電valid()
。
當您在表單上調用valid()
或validate()
時,它將繼續使用MVC3不顯眼的客戶端驗證來標記帶有驗證錯誤的表單,但現在您可以在調用後執行其他操作。
我在我自己的submit()
處理程序(下面)和jQuery驗證插件validate()
和valid()
函數中放置了斷點。我只看到他們在此實現中調用一次,因此您對完整表單的驗證不應執行多次。當然,插件也會鉤住焦點,模糊,鍵入和點擊事件,因此單個字段的驗證器已經被設計多次調用,所以用戶可以立即獲得對失敗/解析表單字段的反饋。驗證是懶惰的,因爲它不會運行,直到用戶在字段中輸入值。一旦用戶輸入值並離開該字段,該字段將被驗證。如果一個字段被標記爲無效,則重新驗證是急切的,因爲對於各種事件重複驗證無效字段,直到它被發現有效。
在頁面底部放置以下內容,全部低於form
標籤。正如所寫的,使用$("form")
選擇器,它將處理頁面上所有form
元素的提交事件。當然,您可以使用jQuery選擇器來挑選特定的form
標籤進行驗證。每當您要執行驗證時,請在表單上撥打valid()
或validate()
,然後按照您希望執行的任何代碼進行驗證。
獲得的驗證結果:
<form>
...
</form>
<script type="text/javascript">
$("form").submit(function (e) {
if ($(this).valid() == false) {
alert("yo!"); // execute anything you want following validation
}
});
</script>
或者,如果你不小心知道驗證的結果:
<script type="text/javascript">
$("form").submit(function (e) {
$(this).validate();
alert("yo!"); // execute anything you want following validation
});
</script>
至少對我來說,它不是很清楚你想要做什麼。你可以添加一個代碼示例或澄清一點? –
更新補充 - 希望這是一個更清晰的解釋! – Sniffer