2011-12-15 43 views
5

我使用JQuery Validation plugin來處理表單驗證。JQuery驗證:驗證一個隱藏的表單(可能的錯誤)

我遇到的問題是,當一個形式是隱藏的,則驗證插件忽略了需要的字段來進行驗證,並直接跳轉到提交表單。

例子:http://jsfiddle.net/Qg5WQ/

我曾通過插件的options一看,一派這個問題,但我無法找到任何指定爲什麼一個隱藏的表單中的字段被忽略。

值得注意的是,如果有一個頁面,其中一個是隱藏的,一個則顯示,如果兩種形式使用相同的驗證方法這兩種形式都成功驗證的兩種形式。但是,如果您調用兩個獨立的驗證方法,則隱藏表單中的字段仍將被忽略。

使用相同的驗證功能驗證兩種形式:http://jsfiddle.net/Qg5WQ/1/

使用不同的驗證功能驗證兩種形式:http://jsfiddle.net/Qg5WQ/2/

有誰知道這是一個錯誤,還是有特定的驗證隱藏表單的方法?

+0

我面臨同樣的問題,所以我正在做我自己的代碼來驗證窗體。 (當我在Web窗體的.aspx) – manny 2011-12-15 11:47:43

回答

11

試一下這個http://jsfiddle.net/Qg5WQ/3/

我加了ignorehidden選項將validate通話。

$("form").validate({ 
    ignore: 'hidden', 
    rules: { 
    "first": "required" 
    }, 
    invalidHandler: function() { 
    alert("error"); 
    }, 
    submitHandler: function(form) { 
    alert("no error"); 
    } 
}); 
+0

謝謝,奇怪的是沒有工作。我似乎可以在忽略字段中添加任何內容,並且它可以正常工作。我想這必須強制它遍歷字段,這使我認爲這一定是一個錯誤。謝謝您的幫助! – 2011-12-15 11:31:49

+0

@MyHeadHurts - 是的,我注意到,非常奇怪,但是它仍然有效=) – Cyclonecode 2011-12-15 11:39:38

7

如果檢查出的documentation pageignore選項,它說,默認值是:hidden。這顯然意味着,如果你沒有明確指定ignore選項,驗證會忽略隱藏的輸入。

只需定義ignore選項(它可以留空),它應該可以解決問題。

$("form").validate({ 
    ignore: '', 
    rules: {"hidden_field": {required:true}} 
});