3

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

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

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 没有经过验证!!

重新运行小提琴

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

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

4

1 回答 1

1

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

不需要代码 - 阅读编辑!

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

这是工作的fidde: 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/

于 2013-01-09T12:12:19.340 回答