Как сбросить режим проверки клиента ASP.NET MVC? - PullRequest
1 голос
/ 09 июня 2010

У меня небольшие проблемы с проверкой на стороне клиента в рамках ASP.NET MVC 2, и я надеюсь, что кто-нибудь может мне помочь.

В некоторых ситуациях я считаю полезным иметь возможность сброса содержимого формы или только одного элемента ввода, и мне нужны любые ошибки проверки, чтобы исчезнуть. Само по себе это не очень сложно, и приведенное здесь предложение работает достаточно хорошо: Как очистить ошибки проверки на стороне клиента MVC при нажатии кнопки отмены, когда пользователь аннулировал форму?

Проблема состоит в том, что при запуске проверка клиента переходит в агрессивный режим, который выполняет проверку при каждом нажатии клавиши и когда ввод теряет фокус. Есть ли хороший способ сбросить это состояние?

1 Ответ

2 голосов
/ 09 июня 2010

Оказалось, что некоторые из моих проблем можно решить, установив для кнопки сброса значение reset, которое учитывает структура проверки. Это не работает, когда происходит сбой отправки (из-за неправильных полей), и в этом случае я использовал следующую функцию (selector - строка селектора jQuery):

resetFieldValidation: function (selector) {
    var fields = $(selector);
    fields.removeClass('input-validation-error').addClass('input-validation-valid');
    fields.siblings('.field-validation-error').text('').removeClass('field-validation-error').addClass('field-validation-valid');
    fields.each(function () {
        $(this)[0]['__MVC_HasTextChanged'] = false;
        $(this)[0]['__MVC_HasValidationFired'] = false;
    });
}

Последняя часть функции устанавливает значения, указывающие платформе валидации, что поля не изменились и ранее не вызывали ошибку валидации.

...