2011-05-19 30 views
0

這個問題有點複雜。讓我以最終目標來介紹這個問題。使用bassistance的jQuery Validation插件,如何以編程方式驗證表單而不觸發錯誤消息?

目標
我想運行某種代碼,將使用驗證插件檢查表格的有效性的,但不會觸發錯誤的消息。我希望表單的提交操作遵循相同的規則,但會拋出錯誤。

基本上,我想禁用提交按鈕,直到形式是完全有效的。因此,只要字段發生變化,我需要檢查所有規則是否滿足。這個過程觸發錯誤被顯示。這(在我的情況下)是有問題的。

問題
有誰知道的方法來檢查使用驗證插件只返回一個true或false,而不會觸發錯誤消息的形式,在任何時候任何形式的有效性改變?

我已經試過
我已經使用success方法試過了,但表單後,這僅適用於已提交,目前只直接影響是改變了場,而不是形式作爲一個整體。

我也嘗試過使用$('#start_date').valid(),但正如我上面已經說過,這會觸發錯誤顯示在表格上。

任何想法?

插件(所以沒有混亂):bassistance's jQuery Validation

回答

1

我一頭扎進了實際的源代碼插件昨晚居然發現,不正是我想要的一個未公開的方法!

$('#formname').validate().checkForm() - 基於表單是否是有效的,而不會觸發錯誤消息返回true或false。

我不知道爲什麼這種方法沒有記載,但它確實應該如此。

我對它的執行禁用或啓用提交按鈕,這樣工作:

$('#formname').bind('change keyup', function() { 
     if($(this).validate().checkForm()) { 
      $('#submitbutton').removeClass('button_disabled').attr('disabled', false); 
     } else { 
      $('#submitbutton').addClass('button_disabled').attr('disabled', true); 
     } 
    }); 
3

我能想到的最快捷的方法是使用什麼也沒做,如果你試圖避免觸發錯誤的自定義驗證錯誤信息放置功能。因此,像:

var hideerrors = false; 
form.validate({ errorClass: "err", 
      errorPlacement: function(error, element) { 
         if(hideerrors) return; 
      error.appendTo(element.parent("div").next("div.errlabel")); 
      } 
     }); 

然後,當你想驗證你可以設置hideerrors爲true,調用validate,然後重新設定hideerrors爲false。

+0

感謝您的想法。在我發現一種方法來處理實際未記錄的方法之前,我確實得到了這個工作。 +1 – 2011-05-20 13:46:16

+0

請分享那些無證方法:) – Femi 2011-05-20 15:23:29

相關問題