Как принудительно выполнить проверку формы на стороне клиента В $или до$.Аякс()


У меня есть форма и включены ненавязчивые проверки. По умолчанию в методе submit запускается проверка на стороне клиента, и (если у вас есть какие-либо ошибки) форма выглядит следующим образом:

Введите описание изображения здесь

Проверка происходит еще до отправки каких-либо данных на сервер.

Теперь это поведение не работает, если вы хотите использовать $.метод "Аякс". Проверка на стороне клиента не работает. Вы должны вручную проверить все поля в вашем javascript, теряя всю красоту DataAnnotations.

Есть ли лучшее решение? Я мог бы использовать jQuery submit () , но я думаю, что он не имеет обратного вызова, как $.ajax .

4 11

4 ответа:

О...

if (form.valid()) // do submit

Вы должны принудительно проверить форму, прежде чем проверять, является ли она действительной. Что-то вроде этого:

var form = $( "#myform" );
form.validate();
if (form.valid()) {
    // ...
}

Я так и сделал...

$("#form-submit-button").click(function (e) {
    e.preventDefault(); // Stops the form automatically submitting
    if ($("#my-form").valid()) {
        $("#my-form").submit();
    }
});

Это также кажется хорошим решением, если у вас есть текстовые поля say с плагином, чтобы превратить эти текстовые поля в элемент управления календарем. Единственная причина, по которой я говорю это, заключается в том, что я использовал Zebra Datepicker с формой MVC, и она отправила бы недействительную форму, если бы фокус был направлен на выбор даты календаря. Используя приведенный ниже код-это.

У меня была та же проблема, что и у Ябларго, когда он говорил, что valid не является функцией, поэтому я придумал следующее:

Для обработчика onclick кнопки submit я поставил следующее:

Onclick= " return $(this).ближайший ("форма").checkValidity (); "