我遇到了jQuery验证条件规则的问题。
我为元素指定条件规则:
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 :(得分:1)
结果添加条件规则的正确语法是:
TimeFrameAmount: {
required: {
depends : function () {
//check conditionality
}
}
}