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

标签 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 = 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 部分的第 1 行]
  2. 由于 JS 第 2 行和第 3 行中的调用,显示了 input1 和 input2 上的错误
  3. 将正确的值插入到 input1 和 input2
  4. 点击提交
  5. !!认识到 input3 没有被验证!!

重新运行 fiddle

  1. 点击提交
  2. 所有字段都按预期验证

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

最佳答案

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

无需代码 - 阅读编辑!

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() 方法是原型(prototype)对象的一部分,您可以访问它。所以不需要上面的代码。

编辑 2:
这就是我最终得到的。它工作正常,但我认为有些东西可以优化。
有什么更好的想法吗?
http://jsfiddle.net/HrPRL/6/
我完成了..这足以满足我的意图:http://jsfiddle.net/HrPRL/8/

关于javascript - 在自定义方法中使用 .element(element) 时 jQuery 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232847/

相关文章:

javascript - 如何设置 HTML 表格的布局,以便在通过 JS 在 <td> 中输入值时它不会更改?

javascript - 单击链接滚动到元素然后向元素添加一个类

javascript - 评论展开/折叠不适用于评论 View 更多/更少

validation - 如果一项验证已经失败,如何防止Grails进行进一步的验证?

java - 在多个类的 spring MVC Controller 中应用自定义 validator

javascript - 检查柯里化(Currying)函数是否仍需要更多参数

javascript - 从 Firefox 扩展中清除 innerHTML 的最佳方法

javascript - Web 应用程序中避免代码重复的策略

javascript - 此代码的工作原理 .html(_.template()({ }) )

json - 从 JSON 数据生成 JSON 模式的工具