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

jQuery validation fails when using .element(element) within custom method

本文关键字:element jQuery 失败 验证 自定义方法      更新时间:2023-09-26

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

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

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');
我已经创建了一个jsfiddle来显示我的问题:
http://jsfiddle.net/AQcrW/

复制步骤:

  1. 在input4中输入一些东西(这个输入是带有自定义规则"checkDependencies"的)[JavaScript-part中的第1行]
  2. input1和input2的错误显示由于调用JS第2行和第3行
  3. 为input1和input2插入正确的值
  4. 单击submit
  5. ! !认识到input3没有被验证!!

重新运行小提琴

  1. 单击submit
  2. 所有字段按预期验证

这是我的错还是它是一个bug在jQuery验证?

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

无需代码-读取编辑!

jQuery.extend(jQuery.validator.prototype, {
    check: function (element)
    {
        return this.check(element);
    }
});

,这里是工作参数:
http://jsfiddle.net/HrPRL/

跟随我的想法,也许看看即将到来的讨论:
https://github.com/jzaefferer/jquery-validation/issues/579

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

编辑2:
这就是我最后得到的。它正在工作,但我认为有些东西可以优化。
有更好的方法吗?
http://jsfiddle.net/HrPRL/6/
我受够了…这就够了:http://jsfiddle.net/HrPRL/8/