Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript 在自定义方法中使用.element(element)时,jQuery验证失败_Javascript_Jquery_Validation_Jquery Validate - Fatal编程技术网

Javascript 在自定义方法中使用.element(element)时,jQuery验证失败

Javascript 在自定义方法中使用.element(element)时,jQuery验证失败,javascript,jquery,validation,jquery-validate,Javascript,Jquery,Validation,Jquery Validate,我有一个自定义规则,它应该通过验证这个依赖的其他输入来检查一些依赖关系。当我做类似的事情时,所有其他输入的验证似乎都被忽略了 这是我的自定义验证规则: jQuery.validator.addMethod("checkDependencies", function (value, element) { var valid1 = jQuery('form#add-lottery-form').validate().element('#input-1'); var valid2 = jQue

我有一个自定义规则,它应该通过验证这个依赖的其他输入来检查一些依赖关系。当我做类似的事情时,所有其他输入的验证似乎都被忽略了

这是我的自定义验证规则:

jQuery.validator.addMethod("checkDependencies", function (value, element) {
  var valid1 = jQuery('form#add-lottery-form').validate().element('#input-1');
  var valid2 = jQuery('form#add-lottery-form').validate().element('#input-2');

  if (valid1 && valid2) {
    return true;
  } else {
    return false;
  }

}, 'dependencie error');
我创建了一个JSFIDLE来显示我的问题:

复制步骤:

  • 在input4中键入一些内容(此输入是具有自定义规则“checkDependencies”的输入)[JavaScript部分的第1行]
  • 由于JS第2行和第3行中的调用,显示了input1和input2上的错误
  • 在input1和input2中插入正确的值
  • 单击提交
  • !!认识到input3未经验证 重奏小提琴

  • 单击提交
  • 所有字段均按预期进行验证

  • 这是我的错还是jQuery验证中的错误?

    经过一些调试并概述插件代码后,我找到了解决问题的方法。我扩展了验证器插件,以便能够调用internal.check(element)函数。此函数仅返回true/false。这并不是一个完美的解决方案,因为它在表单提交时做了两次某些事情,但至少到目前为止它是有效的。。下面是我添加的代码:

    无需代码读取编辑

    jQuery.extend(jQuery.validator.prototype, {
        check: function (element)
        {
            return this.check(element);
        }
    });
    
    这是正在工作的fidde:


    要了解我的想法并查看即将到来的讨论:


    编辑:
    正如我现在意识到的,我非常酷的jQuery扩展没有任何效果
    因为.check()方法是prototype对象的一部分,所以您已经可以访问它了。因此,不需要上面的代码。

    编辑2:
    这就是我的结局。它正在工作,但我认为有些东西可以优化。
    有更好的办法吗


    我完了。。这就够我的意思了:

    @salexch这对你有用吗?对我来说不是。。我的意思是你能得到错误信息“dependencie error”吗?是的。我改变了规则,请看。。它仍然不能正常工作。。验证测试输入1轮胎输入2 ytr请仅输入数字。输入3 ytr请只输入数字。输入4645个从属项error@salexch你能给我举个例子吗?我看到的唯一一件事(我已经知道)是,在更正依赖项错误后,您没有聚焦无效字段。。我要做这一件这一件。。我不认为它比你的好。。它更一般,我真的很喜欢这个,但又有一个问题。在我关于github的第二篇文章(链接在上面)中,我遇到了这个问题。valid()正在重置所有发现的错误,以便在没有“input3”的有效数据的情况下提交表单。谢谢分享你的方法!!那还是不行。尝试:在第四个输入中输入文本。在第一个和第二个输入中输入文本。单击提交