在自定义方法中使用.element(element)时,jQuery验证失败
jQuery validation fails when using .element(element) within custom method
我有一个自定义规则,它应该通过验证这个依赖的其他输入来检查一些依赖项。当我做这样的事情时,对所有其他输入的验证似乎都被忽略了。
这是我的自定义验证规则:
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-part中的第1行]
- input1和input2的错误显示由于调用JS第2行和第3行
- 为input1和input2插入正确的值
- 单击submit
- ! !认识到input3没有被验证!!
重新运行小提琴
- 单击submit
- 所有字段按预期验证
这是我的错还是它是一个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/
相关文章:
- jQuery:.click(function(){(element),collapse('show',f
- jQuery event.target is_a_child_of(element)
- jquery selector on some element
- 先前创建的Element的jQuery.width()返回0
- Jquery add attr action with element
- Jquery Children's child element
- Jquery get element
- jQuery li element select by ID
- jQuery: wrapInner with href of parent element
- jQuery $('element', this) selector,这是什么意思
- jQuery .not(element) 在移动浏览器(Firefox、Chorme、Safari)中不起作用
- 在 document.form.element.value 上触发 jquery
- jquery .ready and height of element
- jQuery alter element if has class
- jQuery nextAll after certain element
- jQuery slide sibling element
- Jquery append overwrite same element
- JQuery:单击 #element 以外的任意位置
- 如何手动触发 jQuery drag() 函数?像 $(element).trigger('drag')
- 将 show/hide element jQuery 代码转换为 JavaScript