Условная проверка MVC3 JQuery

Я пытаюсь выполнить условную проверку с помощью валидатора jQuery.

У меня есть мастер в javascript, который вызывает метод проверки при переходе к следующему шагу:

var validator = $("form").validate();
var anyError = false;

step.find("input").each(function () {
    if (!validator.element(this)) {
        // validate every input
        anyError = true;
    }
});

if (anyError) {
    return false;
}

Все работает нормально, когда у меня есть атрибут [Required] в модели.

Однако у меня есть этот сценарий:

  • У меня есть выпадающий список с выбором: электронная почта или FTP
  • Когда выбран параметр «Электронная почта», я хочу показать поле адреса электронной почты и добавить проверку
  • Когда выбрана опция Ftp, я не хочу проверять адрес электронной почты

Вот фрагмент html для адреса электронной почты.

<div class="email-address" style="display: none;">
   <label class="fullwidth" for="EmailAddress">Email Address</label>
   @Html.TextBoxFor(m => m.EmailAddress, new { @class = "longtext" })
   <div id="email-validation">
   </div>

I've tried all sorts but the next button validation routine always thinks the form is valid. For example.

$("form").validate({
    errorLabelContainer: '#email-validation',
    rules: {
        EmailAddress: {
           required: true
        }
    },
    messages: {
        EmailAddress: "Please enter an email address"
    }
});

Любая помощь приветствуется.


person Matt    schedule 28.10.2011    source источник
comment
проверьте эту статью: blogs.msdn.com/b/simonince/archive/2011/09/29/ У меня была та же проблема, раскрывающийся список для проверки поля, и эта статья действительно полезна.   -  person Gradile    schedule 28.12.2011


Ответы (2)


Я не уверен, но я почти уверен, что вы не можете использовать стандартную проверку jquery в сочетании с проверкой на стороне клиента MVC3. Вы должны сделать одно или другое.

Чтобы быть более конкретным, проверка на стороне клиента MCV3 адаптирует проверку jquery для собственного использования, и это конфликтует с использованием автономной проверки jquery.

person Erik Funkenbusch    schedule 28.10.2011
comment
Нет, ты ошибаешься. ASP.NET mvc поставляется с дополнительной небольшой библиотекой, которая связывает систему проверки mvc с проверкой jquery. - person archil; 28.10.2011
comment
@archil - Да, я знаю. Я сказал это специально. Проблема в том, что вы не можете написать общую проверку jquery И использовать адаптеры jquery MVC на той же странице. - person Erik Funkenbusch; 28.10.2011
comment
извините, но это не так :). Встроенная библиотека mvc просто вызывает методы плагина jquery-validation. Они не конфликтуют. Вы можете использовать любой метод, который вам нравится, из плагина проверки jquery. - person archil; 28.10.2011
comment
@archil - я читал, что несколько человек говорят иначе, например: blog.waynebrantley.com/2011/01/ - person Erik Funkenbusch; 28.10.2011

Я бы использовал тот факт, что входы disabled не участвуют в проверке. Добавьте необходимый для серверной части, но просто отключите и скройте адрес электронной почты, когда выбран ftp.

person archil    schedule 28.10.2011
comment
Привет, я пытался отключить поля, но проверка все еще не удалась. Вот код для вызова валидатора: var validator = $(form).validate(); вар любая ошибка = ложь; $step.find(input).each(function () { if (!validator.element(this)) { anyError = true; } }); если (любая ошибка) вернуть ложь; - person Matt; 31.10.2011