Я использую плагин проверки jQuery для проверки на стороне клиента. Функция editUser()
вызывается нажатием кнопки «Редактировать пользователя», которая отображает сообщения об ошибках.
Но я хочу удалить сообщения об ошибках в моей форме, когда я нажимаю кнопку «Очистить», которая вызывает отдельную функцию clearUser()
.
function clearUser() {
// Need to clear previous errors here
}
function editUser(){
var validator = $("#editUserForm").validate({
rules: {
userName: "required"
},
errorElement: "span",
messages: {
userName: errorMessages.E2
}
});
if(validator.form()){
// Form submission code
}
}
jquery
jquery-validate
Vicky
источник
источник
resetForm()
не удаляются все экземпляры.error
дочерних элементов формы. Это оставит остаточный CSS, как красный цвет текста, если вы не позвоните.removeClass()
. Пример:$('#myform .control-group').removeClass('error');
Я сам сталкивался с этой проблемой. Мне нужно было условно проверить части формы, пока форма строилась на основе шагов (то есть некоторые входные данные были динамически добавлены во время выполнения). В результате иногда выпадающий список требует проверки, а иногда - нет. Однако, к концу испытания это должно было быть подтверждено. В результате мне понадобился надежный метод, который не был обходным путем. Я сверился с исходным кодом для
jquery.validate
.Вот что я придумал:
Вот как это выглядит в коде:
минимизируется как расширение jQuery:
источник
showErrors
выполняет некоторые манипуляции с DOM, и он вызывается для каждого элемента в форме. Браузер завис на пару секунд при использовании этого кода в форме с ~ 30 элементами управления. Решение для меня состояло в том, чтобыshowErrors
выйти из цикла и просто вызвать его один раз прямо перед этимvalidator.resetForm
. Насколько я могу судить, он ведет себя точно так же и намного быстрее.Если вы хотите просто скрыть ошибки:
Если вы указали
errorClass
, то вместо этого вызовите этот классerror
(по умолчанию), который я использовал выше.источник
$(".has-error").removeClass("has-error");
Если вы ранее не сохраняли валидаторы отдельно, прикрепляя их к форме, вы также можете просто вызвать
as
.validate()
вернет те же валидаторы, которые вы добавили ранее (если вы это сделали).источник
Если вы хотите сделать это без использования отдельной переменной, то
источник
К сожалению,
validator.resetForm()
не работает, во многих случаях.У меня есть случай, когда, если кто-то нажимает «Отправить» в форме с пустыми значениями, он должен игнорировать «Отправить». Нет ошибок Это достаточно просто. Если кто-то вводит частичный набор значений и нажимает «Отправить», он должен пометить некоторые поля ошибками. Однако, если они стирают эти значения и снова нажимают «Отправить», это должно устранить ошибки. В этом случае по какой-то причине в массиве «currentElements» нет элементов в валидаторе, поэтому выполнение
.resetForm()
абсолютно ничего не дает.На этом есть сообщения об ошибках.
До тех пор, пока они их не исправят, вам нужно использовать ответ Ника Крейвера, а НЕ принятый ответ Попугаев.
источник
Ты можешь использовать:
источник
Я думаю, что нам просто нужно ввести входы, чтобы очистить все
источник
Если вы хотите просто очистить метки проверки, вы можете использовать код из jquery.validate.js resetForm ()
источник
Для тех, кто использует Bootstrap 3, код ниже будет чистить всю форму: сообщения, значки и цвета ...
источник
Я проверил с:
Все будет хорошо, когда вам нужно будет подтвердить это снова.
источник
Это уничтожит все ошибки проверки
источник
В моем случае помог с подходом:
источник
Если вы хотите скрыть проверку на стороне клиента, которая не является частью отправки формы, вы можете использовать следующий код:
источник
Пробовал каждый ответ. Единственное, что сработало для меня, было:
С помощью:
источник
Ни одно из других решений не помогло мне.
resetForm()
четко задокументировано для сброса фактической формы, например, удаление данных из формы, что не то, что я хочу. Иногда случается так, что иногда не делают этого, а просто удаляют ошибки. Что в итоге сработало для меня, так это:источник
Попробуйте использовать это для удаления проверки по нажатию на кнопку отмены
источник
Попробуй использовать:
на кнопку Очистить.
источник
Чтобы удалить резюме проверки, вы можете написать это
$('div#errorMessage').remove();
Однако, как только вы удалили, снова, если проверка не удалась, она не будет отображать эту сводку проверки, потому что вы удалили ее. Вместо этого используйте скрыть и отобразить с помощью приведенного ниже кода
источник
Ни одно из вышеперечисленных решений не помогло мне. Я был разочарован тратить свое время на них. Однако есть простое решение.
Решение было достигнуто путем сравнения разметки HTML для допустимого состояния и разметки HTML для состояния ошибки.
Никаких ошибок не произойдет:
при возникновении ошибки этот div заполняется ошибками, а класс изменяется на validation-summary-errors:
Решение очень простое. Очистите HTML-код div, который содержит ошибки, а затем верните класс в правильное состояние.
Удачного кодирования.
источник
Если вы также хотите выполнить сброс,
numberOfInvalids()
добавьте следующую строку вresetForm
функцию вjquery.validate.js
номер строки файла: 415.источник
я только что сделал
$('.input-validation-error').removeClass('input-validation-error');
удалить красную рамку на полях ошибок ввода.
источник
$(FORM_ID).validate().resetForm();
все еще не работает, как ожидалось.Я очищаю форму с
resetForm()
. Это работает во всех случаях, кроме одного!Когда я загружаю любую форму через Ajax и применяю валидацию формы после загрузки моей динамики
HTML
, то после того, как я пытаюсь сбросить форму с помощью,resetForm()
и она не удается, а также она сбрасывает все проверки, которые я применяю к элементам формы.Поэтому, пожалуйста, не используйте это для загруженных Ajax форм ИЛИ инициализированной вручную проверки.
PS Вам нужно использовать ответ Ника Крейвера для такого сценария, как я объяснил.
источник
validator.resetForm()
Метод очистки текста ошибки. Но если вы хотите удалить КРАСНУЮ границу из полей, вы должны удалить классhas-error
источник
Функция с использованием подходов Трэвиса J , JLewkovich и Nick Craver ...
источник
Напишите собственный код, потому что все используют разные имена классов. Я сбрасываю проверку JQuery по этому коду.
источник