У меня есть ситуация, когда я создаю ненавязчивый валидатор, который должен подтвердить, что требуется другое поле, только если проверяемое поле не пустое (и наоборот). Проблема в том, что есть некоторые крайние случаи, когда другое поле не проходит повторную проверку, и я хотел бы заставить его выполнить повторную проверку, не вызывая бесконечный цикл.
Мой метод проверки выглядит так:
$.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;
}
Но это вызывает бесконечный цикл, потому что каждый раз, когда он проходит, он вызывает другой.
Как я могу заставить другое поле для проверки без вызова самого исходного поля?