我在使用 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。
我通过在条件规则函数中设置断点来检查这一点,然后$("input[name='TimeFrameAmount']").valid()
从 Firefox 控制台触发调用。
我的条件规则都返回 false 并且$("input[name='TimeFrameAmount']").valid()
仍然返回 0 并且表单验证失败。
需要注意的一件事是,errorPlacement
当我的条件规则返回 false 时,不会触发回调,这是有道理的,因为没有验证 = 没有错误。
实际上,在我验证表单时,输入甚至具有“有效”类(并且之后仍然具有)
但是,这些都不能阻止该valid()
方法返回 0
任何想法如何让表单通过验证?