2011-04-08 28 views
4

我哈瓦像這樣jQuery驗證:獲取遠程驗證,而不改變

remote: { 
    type: "POST", 
    url: "/some/url", 
    data: { 
    value: function() { 
     return $("#field").val(); 
    }, 
    bypass: function() { 
     if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){ 
     return "yes"; 
     } 
     return "no"; 
    } 
    } 
} 

遠程驗證設置如果旁路是「是」,阿賈克斯總是返回true關注字段的值重新運行。

它適用於模糊和提交,但如果我重置單選按鈕值然後提交,它不會重新驗證。

例如,

  1. 集toggleBypass到 「是」
  2. 集字段爲無效值
  3. 運行$( 「表」)。驗證()。元素( 「#場」) 。由於旁路是「是」,它通過。
  4. 將toggleBypass設置爲「否」
  5. 運行$(「form」).validate()。element(「#field」)。它通過,因爲遠程沒有重新提交。

任何想法如何讓它正常工作?

回答

2

如果你看看jquery.validate.js線897,你會看到一個優化:

if (previous.old !== value) {

此行阻止新的驗證,如果該字段的值並沒有改變。由於您使用的是validate().element(),因此它只會檢查該字段,而不是整個表單,因此它不會檢測到toggleBypass中的更改。

要麼從jquery.validate源中刪除此檢查,要麼檢查整個表單,而不僅僅是該字段。

+0

感謝您的幫助。我明天回去工作時會試試這個。 – Altealice 2011-04-10 16:36:50