#jquery #jquery-validate
#jquery #jquery-validate
Вопрос:
Я динамически добавляю правила проверки при нажатии кнопки «Сохранить» — я делаю это для ввода текста и элемента выбора:
$(«#my-txt»).rules(«добавить», { обязательно: true, сообщения: { обязательно: «требуется текст»} });
$(«#my-ddl»).rules(«добавить», { требуется: true, сообщения: { требуется: «требуется выбор»} });
После добавления правил я вручную запускаю проверку ( .valid()
), а затем удаляю правила, выполнив .rules("remove")
для элементов. Я делаю это, потому что хочу, чтобы ошибки сохранялись до тех пор, пока пользователь снова не нажмет «Сохранить» и проверка не будет запущена повторно.
Это работает нормально, и ошибки отображаются правильно… НО … хотя ошибка для ввода текста остается неизменной, несмотря ни на что, когда я нажимаю на выпадающий список, соответствующая ошибка исчезает (я вижу, что display: none вводится в промежуток, содержащий ошибку) независимо от любого выбора (она исчезает, как только я нажимаю на элемент управления, а не когда я выключаю табуляцию). Я бы ожидал, что ошибка выпадающего списка не будет скрыта, такая же, как в поле ввода текста.
Похоже, что правило на самом деле исчезло, потому что, если я вернусь и выберу значение по умолчанию для элемента select (значение =»»), оно не отобразит сообщение об ошибке.
Это озадачило меня — я пытаюсь найти способ заставить оба поля работать одинаково.
Любая помощь приветствуется!
Ответ №1:
Еще раз просмотрев API jquery-validate, я вижу, что нет возможности сохранить отображение ошибки, и разница в обработке отображения должна быть в коде плагина. Удачи в исправлении. 🙂
Другим способом исправить это было бы вручную сохранить то, что jquery-validate добавляет в ваш DOM, удалить его и повторно добавить самостоятельно.
Наконец, я предпочитаю видеть, когда мой ввод действителен, без необходимости повторно нажимать некоторые кнопки. Особенно в случае странных, сложных требований к паролю.
Комментарии:
1. спасибо за вашу помощь — похоже, у меня проблемы. Я тоже предпочитаю этот подход (не нужно нажимать какую-либо кнопку), к сожалению, я не пишу требования ! 😉
Ответ №2:
помимо удаления этого требования с помощью функции jquery.validation, вы также можете удалить класс «required» из вашего элемента. при выполнении этого jquery.validation пропустит элемент, поскольку к нему не прикреплен требуемый класс.
Ответ №3:
вызов
$('#formid').removeData('validator')
Это приведет к удалению проверки для формы
Комментарии:
1. Хай, это работает нормально… но что означает «валидатор». это статично или что-то значит ..?