Ответ 1
$('.field-validation-error')
.removeClass('field-validation-error')
.addClass('field-validation-valid');
$('.input-validation-error')
.removeClass('input-validation-error')
.addClass('valid');
Как reset форма?
то есть. Очистите значения всех полей и удалите ValidationSummary сообщения об ошибках - сводные ошибки с jquery.
Я использую приведенный ниже код, но он не работает:
var validator = $("#myform").validate();
validator.resetForm();
Я использую asp.net MVC3, а сценарии jquery включены на мою страницу.
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
$('.field-validation-error')
.removeClass('field-validation-error')
.addClass('field-validation-valid');
$('.input-validation-error')
.removeClass('input-validation-error')
.addClass('valid');
Я написал быстрое расширение jQuery для обработки этой проблемы, когда я столкнулся с ней, которая:
Он может быть вызван из элемента $(выбранного) в форме или в форме его самого.
Вот пример вызова (вход находится в форме):
<input onclick="$(this).resetValidation()" type="reset" value="Reset" />
Вот код плагина jQuery:
(function ($) {
//re-set all client validation given a jQuery selected form or child
$.fn.resetValidation = function () {
var $form = this.closest('form');
//reset jQuery Validate internals
$form.validate().resetForm();
//reset unobtrusive validation summary, if it exists
$form.find("[data-valmsg-summary=true]")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid")
.find("ul").empty();
//reset unobtrusive field level, if it exists
$form.find("[data-valmsg-replace]")
.removeClass("field-validation-error")
.addClass("field-validation-valid")
.empty();
return $form;
};
})(jQuery);
Надеюсь, это помогло! Вы можете узнать больше об этом и посмотреть другие примеры в моем сообщении в блоге:
вы можете использовать собственное решение (validate 1.9.0 + ненавязчивое)
var $form = $(this).closest('form');
// reset errors with unobtrusive
$form.trigger('reset.unobtrusiveValidation');
// reset inputs
var validator = $form.validate(); // get saved validator
//validator.settings.ignore = ''; // if form hided (closed ui dialogs, etc)
validator.resetForm();
Чтобы следить за сообщением Дарина Димитрова, следующее также очистит итоговое резюме...
$(".validation-summary-errors")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid");
Чтобы закончить Дарин и Кеннифер, я собрал все вместе и добавил последнюю часть, чтобы повторно использовать ленивую проверку
//Reset validation message
$('.field-validation-error')
.removeClass('field-validation-error')
.addClass('field-validation-valid');
//Reset input, select and textarea style
$('.input-validation-error')
.removeClass('input-validation-error')
.addClass('valid');
//Reset validation summary
$(".validation-summary-errors")
.removeClass("validation-summary-errors")
.addClass("validation-summary-valid");
//To reenable lazy validation (no validation until you submit the form)
$('form').removeData('unobtrusiveValidation');
$('form').removeData('validator');
$.validator.unobtrusive.parse($('form'));
Следующий код использует find
для поиска сначала для container
, а затем для дочернего list
. Если список пуст, в контейнер добавляется класс validation-summary-valid
и validation-summary-errors
.
var container = $('form').find('[data-valmsg-summary="true"]');
var list = container.find('ul');
if (list && list.length) {
list.empty();
container.addClass('validation-summary-valid').removeClass('validation-summary-errors');
Надеюсь, это поможет вам http://www.electrictoolbox.com/jquery-clear-form/
Счастливое кодирование