#asp.net-mvc-3 #unobtrusive-javascript #jquery-validate
#asp.net-mvc-3 #ненавязчивый-javascript #jquery-validate
Вопрос:
Использование Asp.Net MVC3 с ненавязчивой проверкой. У меня есть форма, в которой есть несколько полей ввода. Одно из полей довольно простое:
<input id="Name" class="valid" type="text" value="" name="Name" data-val-required="Enter your name." data-val-length-min="5" data-val-length-max="50" data-val-length="Enter a valid name." data-val="true">
Затем у меня есть некоторый js, который проверяет форму и отправляет ее, только если проверка на стороне клиента проходит, как в:
var $form = $('#contact_form');
var formAction = $form.attr('action');
var serialized = $form.serialize();
if ($form.validate().valid()) {...
Теперь последняя строка всегда возвращает true (да, у меня включен ненавязчивый). Однако, если я изменю последнюю строку на:
if ($form.validate().element('#Name')) { ...
Он отлично работает и возвращает false. У меня много полей, и я не хочу перебирать каждое из них, и я не понимаю, почему при проверке всей формы указывается true, но проверка каждого отдельного элемента возвращает false правильно.
Что я пробовал: — повторный анализ формы с помощью $.validator.parse от unobtrusive (… безрезультатно. Это не динамическая форма, и она отображается при загрузке страницы.
Примечание: я также проверил, что jquery (v1.6.2) jquery.validate.min.js (v1.8.1) и jquery.validate.unobtrusive.min.js загружаются в браузере.
Ответ №1:
Вам не нужно вызывать .validate()
, но напрямую .valid()
:
if ($form.valid()) {
...
}