Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证条件规则使输入永远无效-valid始终返回0_Jquery_Jquery Validate - Fatal编程技术网

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

jQuery验证条件规则使输入永远无效-valid始终返回0,jquery,jquery-validate,Jquery,Jquery Validate,我对jQuery验证条件规则有问题 我为元素指定条件规则,如下所示: var validatorSettings = $("form").data('validator').settings; validatorSettings.rules = $.extend({}, validatorSettings.rules, { TimeFrameAmount: { number: function() { return $("select[name='Tim

我对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" } ;
        }
});
问题是当我提交表单时,
$(“表单”).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”类(之后仍然有)

但是,这两种情况都不能阻止
valid()
方法返回0


如何让表单通过验证?添加条件规则的正确语法是:

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

这是哪个验证插件?规则看起来很奇怪。jQuery验证。请参见kjetilh回答中的评论。您能否确认这些函数是否用于您所指的规则逻辑或规则条件?我在“jquery验证”谷歌搜索中获得了50万条搜索结果……请在标记时更加小心
[jquery验证]
[jquery验证引擎]
是两个完全不同的插件。对不起,我不知道。我想你误解了,那些函数具体在什么时候评估规则,如果它们返回false,那么在验证器中注册的“必需”规则将不会执行。它不应该定义实际的规则。。。使用addMethod()向验证程序注册的。这就是我理解它的方式,我相信情况确实如此。“true”是选择框中某个选项的实际值,该选项将使相关输入成为必需输入,也可以是“yes”或其他任何内容。换句话说,当“TimeFrameUnits”为“true”时,则需要“TimeFrameAmount”。啊,我明白了。我一定是误会了。你应该包括一个链接到你正在使用的插件,结果我们都误解了。正确的语法是TimeFrameAmount:{required:{depends:function(){//check conditionality}}。请编辑你的答案,我来打分。谢谢