Я использую плагин jQuery Validation вместе с плагином qTip2 для отображения ошибок.
Я настроил два jsFiddles, чтобы продемонстрировать любопытную проблемуУ меня естьПервые два поля являются «обязательными», третье и четвертое поля являются «необязательными», а третье поле проверяет номер телефона.
Когда я заполняю необязательное поле номера телефона, я все еще проверяюномер телефона, даже если он не требуется.Однако, если пользователь вводит недопустимый номер (получает ошибку), передумывает и забивает поле номера телефона, сообщение об ошибке должно исчезнуть.
Здесь все работает как положено (плагин проверки со стандартными ошибками)(без qTip2)):
jsFiddle # 1: http://jsfiddle.net/avJ54/2/
Проблема в том, что он не работает при использовании qTip2 для отображения ошибок:
jsFiddle # 2: http://jsfiddle.net/WKryu/3/
На элементе класс error
правильно удален и заменен на класс valid
, но, очевидно, обработчик success
делаетне огоньТем не менее, qTip2 зависит от обработчика success
, который нужно запустить, чтобы уничтожить все пузырьки ошибок.
Две вещи заставят обработчик success
вызвать и устранить эту ошибку.
1) Нажатие на кнопку отправки.
2) Заполнение «обязательного» поля и потеря его фокуса.
Итак, проблема в том, что я не могу получить qTip2, чтобы удалить сообщение об ошибкесразу в необязательных полях, когда они отключены, аналогично тому, как это работает в первом jsFiddle.
Поскольку обработчик success
только кажется срабатывает при потере фокуса«Обязательные» поля, есть ли способ заставить его срабатывать при потере фокуса любого поля?Это решит проблему наиболее легко.
Редактировать: Я положил alert()
на обработчик успеха, и он срабатывает только тогда, когда вы теряете фокус любого поля, котороеподтвержденоСтранная часть заключается в том, что, несмотря на мой метод phone
, обработчик успеха срабатывает только тогда, когда вы теряете фокус после ввода действительного номера телефона.Тем не менее, технически, когда поле не отображается и отображается значение по умолчанию, оно также является «действительным» полем, но success
не запускается.Другими словами, при отключении поля и потере фокуса класс немедленно изменяется на .valid
, но обработчик success
никогда не срабатывает.Это то, что меня больше всего смущает, и то, что я ищу объяснения.
Возможно, мое предположение о том, что обработчик success
не стреляет, неверно, , но я пока не могу расшифроватьчто мне нужно сделать, чтобы все это работало правильно.
Подсказка ?: Простое удаление значения поля по умолчанию заставляет его работать ...
jsFiddle # 3: http://jsfiddle.net/BwNLs/
Однако это не совсем то, что я хочу (мне нужны значения полей по умолчанию как часть моего дизайна).Очевидно, что переключение значений полей по умолчанию не является проблемой в jsFiddle # 1 ... это становится проблемой только при представлении qTip2.
Это некоторая комбинация использования qTip2 вместе со значениями полей по умолчанию, вызывающими все эти головные боли.Надеюсь, один из вас увидит, где я слепой.