我有一个自定义规则,它应该通过验证这个依赖的其他输入来检查一些依赖关系。当我做类似的事情时,所有其他输入的验证似乎都被忽略了。
这是我的自定义验证规则:
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/
重现步骤:
- 在 input4 中输入一些内容(此输入是带有自定义规则“checkDependencies”的输入)[JavaScript 部分的第 1 行]
- 由于 JS 第 2 行和第 3 行中的调用,显示了 input1 和 input2 上的错误
- 将正确的值插入到 input1 和 input2
- 点击提交
- !!认识到 input3 没有被验证!!
重新运行 fiddle
- 点击提交
- 所有字段都按预期验证
这是我的错还是 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/