Подтвердить что ты не робот

Что делает this.optional(element) при добавлении метода проверки jQuery?

См. документацию:
https://jqueryvalidation.org/jQuery.validator.addMethod/

Интересно, что делает this.optional(element). Я создал две формы для тестирования:
Form1 и Form2 - один с this.optional(element) и другой без него. Теоретически говоря и в соответствии с несколькими комментариями к этому ответу Эндрю Уитакеру:

all this.optional does is say "если поле является необязательным, верните true, если оно пустое"

и

Проверка this.optional в основном проверяет, не пустое поле или нет, прежде чем оценивать, соответствует ли оно правилу.

Но в действии я не вижу разницы в том, как Form1 и Form2. Пожалуйста, помогите мне понять разницу в действии.

4b9b3361

Ответ 1

ОК... поэтому в ваших примерах поле никогда не бывает пустым в любой форме. Либо у него есть значение-заполнитель, либо попытка указать адрес электронной почты. Вся точка this.optional(element) заключается в немедленном возврате истины, если элемент пуст, и он не требуется.

Итак, если у вас есть эти два метода:

jQuery.validator.addMethod("BOB", function (value, element) {
    return this.optional(element) || 
        element.value === 'BOB';
}, 'You did not enter BOB');

jQuery.validator.addMethod("mustbeBOB", function (value, element) {
    return element.value === 'BOB';
}, 'You did not enter BOB');

Добавление класса BOB required будет таким же, как ввод класса mustbeBOB. Сравните это с классом BOB, который позволит использовать пробел или "BOB", а не класс mustbeBOB, который будет проходить проверку только со значением BOB, пробел будет неудачным. Это имеет смысл?

Ответ 2

this.optional предназначен для использования в методах проверки общего назначения, которые могут использоваться с требуемыми или необязательными элементами. Это позволяет им пропустить все свои собственные проверки, если поле не заполнено. Если поле является необязательным, метод возвращается успешно немедленно; если это необходимо, метод немедленно возвращает отказ.

Используя этот метод, можно предположить, что значение не пустое, что может упростить остальную часть его кодирования.