Как очистить сообщения об ошибках проверки JQuery? - PullRequest
159 голосов
/ 18 января 2010

Я использую плагин проверки 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
    }
}

Ответы [ 25 ]

0 голосов
/ 12 ноября 2013

Ни одно из вышеперечисленных решений не помогло мне. Я был разочарован тратить свое время на них. Однако есть простое решение.

Решение было достигнуто путем сравнения разметки 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');

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

0 голосов
/ 18 января 2010

Попробуйте использовать:

onClick="$('.error').remove();"

на кнопке «Очистить».

0 голосов
/ 19 октября 2011

Попробуйте использовать это для удаления проверки при нажатии на кнопку отмены

 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);
                }
            } 
        }
0 голосов
/ 08 марта 2019

Функция с использованием подходов Трэвис J , JLewkovich и Ник Крейвер ...

// NOTE: Clears residual validation errors from the library "jquery.validate.js". 
// By Travis J and Questor
// [Ref.: https://stackoverflow.com/a/16025232/3223785 ]
function clearJqValidErrors(formElement) {

    // NOTE: Internal "$.validator" is exposed through "$(form).validate()". By Travis J
    var validator = $(formElement).validate();

    // NOTE: Iterate through named elements inside of the form, and mark them as 
    // error free. By Travis J
    $(":input", formElement).each(function () {
    // NOTE: Get all form elements (input, textarea and select) using JQuery. By Questor
    // [Refs.: https://stackoverflow.com/a/12862623/3223785 , 
    // https://api.jquery.com/input-selector/ ]

        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

    // NOTE: For those using bootstrap, there are cases where resetForm() does not 
    // clear all the instances of ".error" on the child elements of the form. This 
    // will leave residual CSS like red text color unless you call ".removeClass()". 
    // By JLewkovich and Nick Craver
    // [Ref.: https://stackoverflow.com/a/2086348/3223785 , 
    // https://stackoverflow.com/a/2086363/3223785 ]
    $(formElement).find("label.error").hide();
    $(formElement).find(".error").removeClass("error");

}

clearJqValidErrors($("#some_form_id"));
0 голосов
/ 05 июля 2013

Чтобы удалить резюме проверки, вы можете написать это

$('div#errorMessage').remove();

Однако, как только вы удалили, снова, если проверка не удалась, это не будет отображать эту сводку проверки потому что вы удалили это. Вместо этого используйте скрыть и отобразить, используя код ниже

$('div#errorMessage').css('display', 'none');

$('div#errorMessage').css('display', 'block');  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...