Ответ 1
Ох...
if (form.valid()) // do submit
У меня есть форма и ненавязчивые проверки. По умолчанию в методе отправки метод проверки на стороне клиента запускается и (если у вас есть какие-либо ошибки) форма выглядит следующим образом:
Проверка выполняется даже до отправки любых данных на сервер.
Теперь это поведение не работает, если вы хотите использовать метод $.ajax. Проверка на стороне клиента не работает. Вы должны вручную проверить все поля в вашем javascript, потеряв всю красоту DataAnnotations.
Есть ли лучшее решение? Я мог бы использовать jquery submit(), но, я думаю, у него нет обратного вызова, например $. Ajax.
Ох...
if (form.valid()) // do submit
Вы должны принудительно проверить форму, прежде чем проверять, действительно ли она действительна. Что-то вроде этого:
var form = $( "#myform" );
form.validate();
if (form.valid()) {
// ...
}
У меня была та же проблема, что и у Ябларго, в которой говорилось, что действительный не является функцией, поэтому я придумал следующее:
Для обработчика onclick кнопки submit я помещаю это:
onclick = "return $(this).closest('form'). checkValidity();"
Я сделал...
$("#form-submit-button").click(function (e) {
e.preventDefault(); // Stops the form automatically submitting
if ($("#my-form").valid()) {
$("#my-form").submit();
}
});
Это также кажется хорошим решением, если вы указали текстовые поля с плагином, чтобы сделать эти текстовые поля в элементе управления календарем. Единственная причина, по которой я говорю это, - это то, что я использовал Zebra Datepicker с формой MVC, и он отправил бы недопустимую форму, если бы основное внимание было уделено календарю выбора даты. Использование приведенного ниже кода останавливает это.