Я использую asp.net mvc 3 и хочу использовать ненавязчивый JavaScript . Я создаю довольно длинную форму, которая, вероятно, была бы очень подавляющей, если бы ее не разбили.
Я решил использовать jquery form wizard , чтобы разбить его на мастера, который не должен выглядеть таким подавляющим. Мне не интересно, как мне использовать аннотации данных и ненавязчивый java-скрипт с мастером.
Прямо сейчас все по-прежнему в одной большой форме, но выглядит просто разбитым через волшебника. В конце формы есть только одна кнопка отправки, которая при щелчке сериализует данные формы и отправляет сообщение ajax на сервер с этими данными.
Из того, что я обычно видел впервые при использовании проверки mvc, пользователь должен нажать кнопку отправки, прежде чем какая-либо проверка на стороне клиента получит триггер. Мне интересно, возможно ли это сделать после того, как они покинут поле, так как это может сбить пользователя с толку, когда он нажмет «отправить», и ничего не произойдет, а затем ему придется снова пройти весь мастер, чтобы найти ошибки проверки.
Было бы неплохо сообщить им сразу, когда они совершат ошибку.
Я знаю, что мастер jquery использует плагин формы jquery, который имеет валидацию, но я, скорее, стараюсь придерживаться одного метода, если это возможно, для обеспечения согласованности кода.
Редактировать
Это то, что у меня есть на кнопке отправки
$('#frm').live('submit', function (event) {
event.preventDefault();
var $thisFrm = $(this);
ValidatorParse($thisFrm);//jQuery.validator.unobtrusive.parse(selector);
var clientCheck = $($thisFrm).validate().form();
if (clientCheck) {
// ajax post(server side validation will happen.If it does not pass serverside I send it back usually as json).
}
});
Итак, я вижу пару проблем с этим. Сначала только проверка действительно будет запущена при отправке. Если он запускается и ошибка проверки появляется на втором шаге мастера, пользователь не увидит его (если только кто-нибудь не сможет найти способ найти первую ошибочную ошибку проверки и переключить их на этот шаг).
Вторая проблема, которую я вижу, заключается в том, что им приходится ждать до конца, чтобы узнать, есть ли у них ошибки проверки. Я лучше сообщу им как можно скорее.
Редактировать
Кажется, что мастер использует jquery validate, но по какой-то причине он не работает с mvc jquery validate.
Проведя дополнительные исследования, я обнаружил, что волшебнику нужно видеть «требуемый» как класс для запуска
// will trigger validation
<input type="text" value="" name="AnnualFee" id="AnnualFee"
data-val-required="Annual Fee Required"
data-val="true"
class="required ui-wizard-content ui-helper-reset ui-state-default error">
// will not trigger validation
<input type="text" value="" name="AnnualFee" id="AnnualFee"
data-val-required="Annual Fee Required"
data-val="true"
class="ui-wizard-content ui-helper-reset ui-state-default">
Я не вижу в документации для jquery проверки их когда-либо с использованием класса для проверки формы. Это что-то, что выдумал человек?