我有一种情况,我正在创建一个不显眼的验证器,该验证器必须验证仅当验证的字段不为空时才需要另一个字段(反之亦然)。问题是在某些极端情况下,其他字段不会重新验证,我想强制它重新验证自己而不会导致无限循环。
我的验证方法如下所示:
$.validator.addMethod("jqiprequired", function (value, element, params) {
if (!this.optional(element) || (this.optional(params) && this.optional(element))) {
return true;
}
return false;
});
params 是我的另一个字段(都是文本框)。如果两者都为空,则通过,如果两者都有值,则通过。仅当只有一个值时才会失败。
这很好用,除非如果一个字段为空,而另一个字段有值,那么您从具有值的字段中删除该值,空字段不会重新验证(因为它的值没有更改)。
我试过这样做:
if (!this.optional(element) || (this.optional(params) && this.optional(element))) {
$('form').validate().element(params);
return true;
}
但这会导致无限循环,因为每次它通过时,它都会调用另一个。
如何在不调用原始字段的情况下使其他字段验证?