Как очистить сообщения об ошибках проверки jQuery?
Я использую плагин для проверки 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
}
}
22 ответа:
вы хотите
resetForm()
способ:var validator = $("#myform").validate( ... ... ); $(".cancel").click(function() { validator.resetForm(); });
Я схватил его из источника один из их демо.
Примечание: этот код не будет работать для Bootstrap 3.
Я сам столкнулся с этим вопросом. У меня была необходимость условно проверять части формы, пока форма строилась на основе шагов (т. е. некоторые входы были динамически добавлены во время выполнения). В результате иногда выпадающий список select нуждается в проверке, а иногда и нет. Однако к концу испытания его необходимо было подтвердить. В результате мне нужен надежный метод, который не был обходным путем. Я проконсультировался с исходным кодом для
jquery.validate
.вот что я придумал:
очистить ошибки, указав успех проверки обработчик вызовов для отображения ошибок очистить все хранилища успеха или ошибок сброс всей проверки формы вот как это выглядит в коде:
function clearValidation(formElement){ //Internal $.validator is exposed through $(form).validate() var validator = $(formElement).validate(); //Iterate through named elements inside of the form, and mark them as error free $('[name]',formElement).each(function(){ validator.successList.push(this);//mark as error free validator.showErrors();//remove error messages if present }); validator.resetForm();//remove error class on name elements and clear history validator.reset();//remove all error and success data } //used var myForm = document.getElementById("myFormId"); clearValidation(myForm);
уменьшенный как расширение jQuery:
$.fn.clearValidation = function(){var v = $(this).validate();$('[name]',this).each(function(){v.successList.push(this);v.showErrors();});v.resetForm();v.reset();}; //used: $("#formId").clearValidation();
Если вы хотите просто скрыть ошибки:
$("#clearButton").click(function() { $("label.error").hide(); $(".error").removeClass("error"); });
Если вы указали
errorClass
, вызовите этот класс, чтобы скрыть вместоerror
(по умолчанию) я использовал выше.
Если вы ранее не сохраняли валидаторы отдельно при прикреплении их к форме, вы также можете просто вызвать
$("form").validate().resetForm();
как
.validate()
вернет те же валидаторы, которые вы прикрепили ранее (если вы это сделали).
Если вы хотите сделать это без использования отдельной переменной
$("#myForm").data('validator').resetForm();
к сожалению,
validator.resetForm()
не работает, во многих случаях.у меня есть случай, когда, если кто-то нажимает "отправить" на форме с пустыми значениями, он должен игнорировать "отправить.- Никаких ошибок. Это достаточно просто. Если кто-то вставляет частичный набор значений и нажимает "отправить", он должен пометить некоторые поля с ошибками. Если, однако, они уничтожают эти значения и снова нажимают "отправить", он должен очистить ошибки. В этом случае, по какой-то причине, нет никаких элементов в массив "currentElements" в валидаторе, поэтому выполнение
.resetForm()
абсолютно ничего не делает.есть ошибки, опубликованные на этом.
до тех пор, пока они не исправят их, вам нужно использовать ответ Ника Крейвера, а не принятый ответ попугаев.
Если вы хотите просто очистить метки проверки, вы можете использовать код из jquery.утверждать.js resetForm ()
var validator = $('#Form').validate(); validator.submitted = {}; validator.prepareForm(); validator.hideErrors(); validator.elements().removeClass(validatorObject.settings.errorClass);
Я думаю, что нам просто нужно ввести входные данные для чистых все
$("#your_div").click(function() { $(".error").html(''); $(".error").removeClass("error"); });
для тех, кто использует Bootstrap 3 код ниже будет очистить всю форму: meassages, иконки и цвета...
$('.form-group').each(function () { $(this).removeClass('has-success'); }); $('.form-group').each(function () { $(this).removeClass('has-error'); }); $('.form-group').each(function () { $(this).removeClass('has-feedback'); }); $('.help-block').each(function () { $(this).remove(); }); $('.form-control-feedback').each(function () { $(this).remove(); });
проверил:
$("div.error").remove(); $(".error").removeClass("error");
это будет нормально, когда вам нужно будет проверить его снова.
попробуйте использовать это для удаления проверки при нажатии на кнопку Отмена
function HideValidators() { var lblMsg = document.getElementById('<%= lblRFDChild.ClientID %>'); lblMsg.innerHTML = ""; if (window.Page_Validators) { for (var vI = 0; vI < Page_Validators.length; vI++) { var vValidator = Page_Validators[vI]; vValidator.isvalid = true; ValidatorUpdateDisplay(vValidator); } } }
чтобы удалить резюме проверки, вы можете написать это
$('div#errorMessage').remove();
однако, как только вы удалили, снова, если проверка не удалась, она не покажет эту сводку проверки потому что вы его удалили. Вместо этого используйте скрыть и отобразить с помощью кода ниже
$('div#errorMessage').css('display', 'none'); $('div#errorMessage').css('display', 'block');
ни одно из вышеперечисленных решений не сработало для меня. Я был разочарован, потратив на них свое время. Однако есть простое решение.
решение было достигнуто путем сравнения HTML-метки для допустимого состояния и HTML-метки для состояния ошибки.
никаких ошибок не будет производить:
<div class="validation-summary-valid" data-valmsg-summary="true"></div>
при возникновении ошибки этот div заполняется ошибками и класс изменяется на validation-summary-errors:
<div class="validation-summary-errors" data-valmsg-summary="true">
решение очень простой. Очистите HTML div, который содержит ошибки, а затем измените класс обратно в допустимое состояние.
$('.validation-summary-errors').html() $('.validation-summary-errors').addClass('validation-summary-valid'); $('.validation-summary-valid').removeClass('validation-summary-errors');
удачи в кодировании.
Я только что сделал
$('.input-validation-error').removeClass('input-validation-error');
для удаления красной границы полей ошибок ввода.
$(FORM_ID).validate().resetForm();
по-прежнему не работает, как ожидалось.я очищаю форму с
resetForm()
. Он работает во всех случаях, кроме одного!!когда я загружаю любую форму через Ajax и применяю проверку формы после загрузки моего dynamic
HTML
, то после того, как я пытаюсь сбросить форму сresetForm()
и он терпит неудачу, а также он сбросил все проверки, которые я применяю к элементам формы.поэтому, пожалуйста, не используйте это для Ajax загруженных форм или инициализированных вручную утверждение.
П. С. вы должны использовать Ник Крейвер ответьте за такой сценарий, как я объяснил.