0

我在使用 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

任何想法如何让表单通过验证?

4

1 回答 1

1

原来添加条件规则的正确语法是:

TimeFrameAmount: { 
    required: { 
        depends : function () { 
            //check conditionality 
        } 
    } 
} 
于 2013-02-19T08:59:01.033 回答