jQuery验证条件规则使输入永远无效 - 有效始终返回0

时间:2013-02-19 08:38:01

标签: jquery jquery-validate

我遇到了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

如何让表单通过验证?

1 个答案:

答案 0 :(得分:1)

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

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