jQuery Validation条件规则使输入永远无效 – 有效始终返回0

我遇到了jQueryvalidation条件规则的问题。

我为元素指定条件规则:

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的唯一元素,因此是导致表单validation失败的元素。

我进一步追溯到$("input[name='TimeFrameAmount']").valid() 总是返回0并导致表单validation失败,即使条件规则函数都返回false。

我通过在条件规则函数中设置断点来检查这一点,然后从Firefox控制台触发了对$("input[name='TimeFrameAmount']").valid()的调用。

我的条件规则都返回false和$("input[name='TimeFrameAmount']").valid()仍然返回0并且表单validation失败。

需要注意的一点是,当条件规则返回false时,不会触发errorPlacement回调,这是有道理的,因为没有validation=没有错误。

事实上,在我validation表单时,输入甚至具有“有效”类(并且之后仍然具有它)

但是,这些都不会阻止valid()方法返回0

有任何想法如何让表单通过validation?

结果是添加条件规则的正确语法是:

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