ASP.NET MVC и частичная проверка на стороне клиента - PullRequest
0 голосов
/ 13 мая 2011

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

Например: моя форма имеет 40 полей, и они разделены на 4 этапа (по 10 полей в каждом). В HTML 40 находятся на той же странице, но с помощью jQuery я показываю только первые 10 и следующую кнопку, четвертая страница содержит кнопку «Отправить». Мне нужен способ вызвать проверку этих десяти полей, прежде чем перейти к следующему шагу.

Есть ли способ сделать это?

Привет.

Ответы [ 4 ]

1 голос
/ 13 мая 2011

Если вы используете ненавязчивую проверку по умолчанию для mvc3, вы можете вызвать проверку нужных элементов с помощью цикла и Проверка одного элемента

0 голосов
/ 13 мая 2011

Если вы используете кнопки для перемещения между каждым шагом, вы можете изменить свою страницу, чтобы иметь отдельную форму для каждого шага. Затем вы можете ограничить валидацию формой, которая является родительской для кнопки отправки, и использовать валидацию для «шага», чтобы определить, следует ли включить / показать форму для следующего шага. Вот пример кода:

$(".stepButton").live("click", function() {
    if (isValid(this)) {
        // code to proceed to next step
    }
});

function isValid(el) {
    var $thisform = $(el).parent().parent();
    $thisform.validate();
    return $thisform.valid();
}
0 голосов
/ 13 мая 2011

Хотя игнорирование элементов путем пометки их атрибутом class="ignore" работает, MVC 3 по умолчанию использует подключаемый модуль проверки jQuery, и это plug-in will not validate disabled fields. Код, в котором вы скрываете свои элементы помимо видимых 10 полей, вы также можете просто отключить эти элементы, и они не будут проверены (и обратите внимание, что эти отключенные поля также не будут опубликованы на сервере).

, например

$('input').attr('disabled', 'disabled');
0 голосов
/ 13 мая 2011

Вы можете использовать плагин jQuery Validation . У этого есть опция , чтобы игнорировать элементы при проверке. Таким образом, вы можете, например, пометить все поля, которые не показаны (и еще не требуют проверки) классом. Например, чтобы игнорировать все элементы формы с class="ignore", вы должны сделать это:

$("#myform").validate({
   ignore: ".ignore"
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...