2012-03-11 41 views
0

,因爲它是在驗證默認規定與一般的錯誤信息的錯誤容器DIV會自動顯示:JQ驗證:隱藏錯誤容器

jQuery.validator.setDefaults({ 
    ........ 
    errorContainer: ".valerror", 
    ........ 
}); 

這個容器僅一般的「檢查您輸入」消息,不應該包含特定於每個輸入控件的消息。當我點擊提交按鈕而沒有填寫表單時,標記了無效字段並顯示了一般錯誤消息。當字段填滿時,它們沒有標記,但一般錯誤消息仍然存在。

現在的問題:我需要隱藏容器時,所有的領域變得有效(沒有再次按下提交按鈕)。

我試圖

unhighlight: function(element, errorClass) { 
     if (this.numberOfInvalids() == 0) { 
      $(".valerror").hide(); 
     } 
    }, 

,但是這個代碼塊完全deranges驗證引擎的正常運作,因爲它不知道「unhighlight」任何東西。

接受的答案

我複製「unhighlight」和「亮點」從處理jQuery驗證插件的源代碼,以我的代碼,並恢復了驗證功能。

highlight: function(element, errorClass, validClass) { 
     // default handling 
     if (element.type === 'radio') { 
      this.findByName(element.name).addClass(errorClass).removeClass(validClass); 
     } else { 
      $(element).addClass(errorClass).removeClass(validClass); 
     } 
     // custom handling 
     $("#errnum").html(this.numberOfInvalids()); 
    }, 
    unhighlight: function(element, errorClass, validClass) { 
     // default handling 
     if (element.type === 'radio') { 
      this.findByName(element.name).removeClass(errorClass).addClass(validClass); 
     } else { 
      $(element).removeClass(errorClass).addClass(validClass); 
     } 
     // custom handling 
     $("#errnum").html(this.numberOfInvalids()); 
    }, 

知道剩下的驗證錯誤的數目幫我找出的錯誤容器由JQ驗證插件,而這個問題是在沒有對Master選擇的改變重新驗證一些相關的從屬選擇(自動牆根但突出顯示從奴隸被刪除)。

回答

0

你可能會做其他的事情,你沒有在上面的例子中展示我們。 errorContainer記錄如下:

使用附加容器來顯示錯誤消息。給定爲 的元素errorContainer都示出和隱藏時的錯誤發生

即驗證手柄顯示和隱藏任何你指定爲errorContainer。你可以在這裏看到它確實處理正確:http://jsfiddle.net/ryleyb/neugH/

如果這沒有幫助,你需要修改你的問題以提供更多的代碼......可能你需要的其他選項,重新提供$ .validate和附加到表單的任何其他JS。