Есть ли функция в jquery.validate, которая будет reset для одного поля, такого как resetForm, для формы?

Я хочу вызвать функцию jquery для ручного удаления ошибок из одного поля и reset разметки ошибок. Существует ли функция, которая будет аналогична функции resetForm?

Ответы

Ответ 1

this сбрасывает всю форму

var validator = $("#myform").validate();
validator.resetForm();

этот будет reset только элемент name

$("#skip").click(function() {
   var rules = $("#name").removeAttrs("min max"); // remove min and max
   $("#form").submit(); // submit, as there are no attributes, it will not have an error
   $("#name").attr(rules); // add it again so you can validate it
});

Ответ 2

Вы можете сделать следующее для проверки одного поля:

$('#your_field').valid();

Может быть, это поможет кому-то: -)

Спасибо!

Ответ 3

Невозможно найти что-либо встроенное в библиотеку проверки, но этот хак работает:

$('#email').removeClass('error').next('label.error').remove();

Ответ 4

Эта функция возможна с помощью опции focusCleanup: true и запускает событие focusin на желаемом элементе. Но не всегда желательно инициировать это событие. По-видимому, вы можете использовать внутренний код плагинов, который работает на focusin и вызывать его внешне следующим образом:

/*get your element and containing validated form*/
var $that = $('#desired_elemenet');
var $form = $that.closest('form');

/*get validator object for the form*/
var validator = $form.validate();

/*use internal code of a plugin to clear the field*/
if (validator.settings.unhighlight) {
    validator.settings.unhighlight.call( validator, $that[0], validator.settings.errorClass, validator.settings.validClass );
}
validator.hideThese( validator.errorsFor( $that[0] ) );

Ответ 5

var form = $('#form'); 
var validator = form.validate();

// Validate single field from that form.
var myfield = $('#myfield');
myfield.removeData('previousValue').removeAttr('aria-invalid');
validator.resetElements(myfield);