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 } } }