Сброс формы MVC с помощью jquery - PullRequest
22 голосов
/ 28 марта 2011

Как мне сбросить форму?

т.е. Очистите значения всех полей и удалите сообщения об ошибках ValidationSummary validation-summary-errors с помощью 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>

Ответы [ 7 ]

51 голосов
/ 17 ноября 2011

Я написал быстрое расширение jQuery для решения этой проблемы, когда я столкнулся с ним, который:

  • Сбрасывает ошибки проверки на уровне поля
  • Очищает / скрывает сводку проверки
  • Сбрасывает внутренний список ошибок jQuery Validate

Его можно вызывать из элемента $ (выделенного) внутри формы или из самой формы.

Вот пример вызова (входные данные находятся внутри формы):

<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's 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);

Надеюсь, это помогло! Вы можете прочитать больше об этом и посмотреть другие примеры в моем блоге здесь:

http://www.johnculviner.com/post/2011/11/16/ClearReset-MVC-3-Form-and-Unobtrusive-jQuery-Client-Validation.aspx

33 голосов
/ 28 марта 2011
$('.field-validation-error')
    .removeClass('field-validation-error')
    .addClass('field-validation-valid');

$('.input-validation-error')
    .removeClass('input-validation-error')
    .addClass('valid');
8 голосов
/ 07 сентября 2012

вы можете использовать нативное решение (проверка 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();
4 голосов
/ 07 октября 2011

В ответ на сообщение Дарина Димитрова следующее также очистит сводку проверки ...

$(".validation-summary-errors")
        .removeClass("validation-summary-errors")
        .addClass("validation-summary-valid");
1 голос
/ 23 февраля 2015

В следующем коде используется 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');
1 голос
/ 04 марта 2014

В завершение ответа Дарина и Кеннифер я собрал все воедино и добавил последнюю часть в ленивую проверку для повторного включения

        //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'));
0 голосов
/ 28 марта 2011

Надеюсь, это поможет вам http://www.electrictoolbox.com/jquery-clear-form/

Удачного кодирования

...