2010-09-26 37 views
8

我正在使用jQuery驗證插件來驗證表單。你知道如何強制重新驗證以前成功字段?jQuery驗證插件:如何強制驗證以前有效的字段?

我已經使用以下檢查嘗試了.FORM功能(這是用戶之後進行點擊「提交」):

if ($('#form1').validate().form()==false) 
{ 
    formValid = false; 
} 

然而,看來上面的代碼不會重試驗證這樣的字段已經被成功驗證(即在他們旁邊打勾)不再被檢查。

原因想重試先前成功的領域重新確認的是,他們依靠遠程驗證和結果(成功或失敗),可以在離開現場,並點擊提交按鈕,用戶之間切換。 (這適用於'用戶名'字段)。

在情況下,它會影響我有多種形式來驗證(爲簡單起見,在上面的代碼段我僅指「#form1中」)的答案。

預先感謝任何建議,

羅布

回答

17

驗證的遠程場狀態通過$.data()你要驗證的元素存儲,因此您可以使用.removeData()以清除了.. 。所以它是被迫重新驗證:

$("#form1 :input").removeData("previousValue"); 
//now call .valid() 

這迫使如果該值已經改變(我們需要重新驗證)檢查是true

//This code is in the validation plugin for remote: 
var previous = this.previousValue(element); 
if (previous.old !== value) { //this is normally false, since it hasn't changed 

如果只有需要重新驗證,就像你說的用戶名,您可能希望將$("#form1 :input")選擇範圍縮小到只有你想要的字段的特定字段,使其多一點效率。

+0

優秀 - 這完全清除驗證,感謝尼克......雖然另一個問題也隨之而來!因爲它現在正在重新驗證所有表單,所以在javascript中出現錯誤:「無法加載資源:取消」。只有在頁面上有多個表單時(這是用戶驅動的操作,因爲表單是動態創建的),纔會出現此問題。有什麼建議麼? – Rob 2010-09-26 17:19:20

+0

@Rob - 我只會用這個清除遠程選項,它會節省最頭痛的問題,你能用比上面選擇更具體的選擇器嗎?此外,我只會重新驗證您提交的那個。 – 2010-09-26 17:23:35

+0

從一些調試看來該「未能加載資源」錯誤發生時.validate()。形式()被同時要求與相同名稱的兩個形式輸入。我需要檢查提交的所有輸入,以便即使有最具體的選擇器仍然會產生問題。如果我叫.validate()手動不會發生錯誤。形式()上的每個順序與用戶驅動的動作形式(例如點擊「驗證」按鈕)......如此看來我需要驗證序列形式(即只有在成功驗證第一個表單後纔會調用下一個表單的驗證)......任何建議? – Rob 2010-09-27 12:42:23

相關問題