0

У меня есть решение MVC, которое использует @ Html.ValidationMessageFor вместе с функцией $ ('.btn'). Click(), чтобы отобразить простой диалог «Загрузка ...». Я хотел бы отменить это действие функции click(), если проверка формы не удалась. Я заглянул в библиотеку jquery.validation.unobtrusive (и включил ее в мое решение), и в настоящее время я пытаюсь сделать чек следующим образом.Отмена jquery button.click на MVC ValidationMessageFor

$('.btn').click(function() { 
     if ($(this).validate().valid()) { 
      $("#initialWaitTableLoad").fadeIn(); 
     } 
    }); 

Эта проверка проверки не работает и по-прежнему выполняет метод fadeIn(). Как я могу предотвратить это действие при сбое проверки?

ответ

2

Если вам нужно проверить обоснованность одной из форм, когда кнопка нажата, вы бы использовать метод .valid() в обработчике щелчка и прикрепите .valid() к вашим form, а не кнопкам, как вы сделали.

$('.btn').click(function() { 
    if ($('#myform').valid()) { // test validity of the form 
     $("#initialWaitTableLoad").fadeIn(); 
    } 
}); 

EDIT:

$('#myform') просто мой общий пример выше. Осмотрите DOM и используйте любой селектор jQuery, который вы хотите, для этой конкретной формы.

+0

FWIW, мне также нужно будет добавить имя формы в my @ Html.BeginForm (..., new {name = "myform"}) – McArthey

+1

@McArthey, или просто использовать любой селектор jQuery, который вы хотите правильно настроить для этой формы. – Sparky

1

Вам необходимо проверить действительность на форме, а не на кнопке. В вашем случае $ (this) ссылается на кнопку, которая была просто нажата. Если возможно, отредактируйте свою функцию для запуска при отправке формы, а не нажатием кнопки.

$('#myform').submit(function() { 
    if ($(this).valid()) { 
     $("#initialWaitTableLoad").fadeIn(); 
    } 
}); 
+0

Вы не захотите захватить событие 'submit()', потому что плагин уже делает это автоматически. – Sparky

+0

Спасибо. У меня было это прямо в моем коде, но все попытки решить мою проблему меня перепутали. Я ценю напоминание. – McArthey