2013-02-19 12 views
0

我遇到了jQuery驗證條件規則的問題。jQuery驗證條件規則使輸入永不有效 - 有效總是返回0

我指定條件規則的元素作爲這樣:

var validatorSettings = $("form").data('validator').settings; 
validatorSettings.rules = $.extend({}, validatorSettings.rules, { 
     TimeFrameAmount: { 
      number: function() { return $("select[name='TimeFrameUnits']").val() === "true"; }, 
      required: function() { return $("select[name='TimeFrameUnits']").val() === "true" } ; 
     } 
}); 

問題是當我提交表單,$("form").valid()返回0

我追查是向下看到$("input[name='TimeFrameAmount']").valid()是唯一的元件在返回0的表單中,因此是導致表單無法驗證的元素。

我進一步追查到這一點$("input[name='TimeFrameAmount']").valid()總是返回0並導致表單驗證失敗,即使條件規則函數都返回false。

我通過在條件規則函數中設置一個斷點來檢查這一點,然後從Firefox控制檯觸發對$("input[name='TimeFrameAmount']").valid()的調用。

我的條件規則都返回false並且$("input[name='TimeFrameAmount']").valid()仍然返回0,並且表單驗證失敗。

有一點需要注意的是,當我的條件規則返回false時,不會觸發errorPlacement回調,這是有道理的,因爲沒有驗證=沒有錯誤。

事實上,輸入甚至具有在我驗證表單時的「有效」類(和之後仍然有它)

然而,無論那些東西防止valid()方法從返回該0

任何想法如何讓表單通過驗證?

+0

這驗證插件是這樣嗎?規則看起來很奇怪。 – JJJ 2013-02-19 08:50:09

+0

jQuery驗證。請參閱kjetilh的回答中的評論。你能否確認這些函數是否適用於規則邏輯或規則條件 – parliament 2013-02-19 09:48:02

+0

你的意思是http://docs.jquery.com/Plugins/Validation/validate?我得到50萬「jquery validate」Google搜索的結果... – JJJ 2013-02-19 09:50:05

回答

1

原來正確的語法來添加條件規則是:

TimeFrameAmount: { 
    required: { 
     depends : function() { 
      //check conditionality 
     } 
    } 
} 
+0

我覺得你誤解了,那些函數特定的時候評估規則,如果它們返回false,那麼驗證器中註冊的「required」規則將不會執行。它不應該定義使用addMethod()向驗證器註冊的實際規則。這是我理解它的方式,並相信是這樣。 「真」是選擇框中的一個選項的實際值,它會使輸入有問題,也可以是「是」或其他。換句話說,當「TimeFrameUnits」爲「true」時,則需要「TimeFrameAmount」。 – parliament 2013-02-19 09:35:19

+0

啊我明白了。我一定誤解了。你應該包括一個鏈接到你正在使用的插件 – kjetilh 2013-02-19 09:54:54

+0

原來我們都誤解了。正確的語法是TimeFrameAmount:{required:{depends:function(){// check conditionality}}}。請編輯你的答案,我會標記。謝謝 – parliament 2013-02-19 10:04:06

相關問題