/ / Obsługa zdarzeń post-post przez jquery w celu sprawdzenia poprawności formularza (dyskretna walidacja) - javascript, jquery, jquery-validate, unobtriveive-validation

Obsługa zdarzenia post post przez jquery w celu sprawdzenia poprawności formularza (dyskretna walidacja) - javascript, jquery, jquery-validate, unobtriveive-validation

Muszę obsłużyć zdarzenie przesyłania formularza i ewentualnie zablokować pocztę. dawny:

$("#myForm").submit(function (){
if (someCondition)
return true //post;
else
return false //dont post
});

Ta część działa, ale teraz mam wtyczkę jquery.validate z jquery.validate.unobtrusive.

Chcę uruchomić tę część kodu po sprawdzanie poprawności jest wykonywane (i tylko wtedy, gdy formularz jest prawidłowy).

Jakieś pomysły?

Kilka wyjaśnień

Wtyczka sprawdzania poprawności to wtyczka jquery.validate z basista Używam Microsoftów " dyskretny (który jest wysyłany wraz z MVC3) wtyczką na wierzchu. Myślę, że to w validationInfo funkcja w jquery.validate.unobtrusive.js, aby zadanie zostało wykonane ...

Odpowiedzi:

1 dla odpowiedzi № 1

Spróbuj tego:

$("#myform").validate({
submitHandler: function(form) {
if (someCondition)
return true; //post
else
return false; //dont post
}
}
});

0 dla odpowiedzi nr 2

Nie jestem pewien, czy dobrze rozumiem twoje pytanie, ale spójrz na submitHandler opcja w plugin jQueryValidate:

Oddzwonienie do obsługi faktycznego przesłania, gdy formularz jest ważny. Pobiera formularz jako jedyny argument. Zastępuje domyślne przesłanie.

http://docs.jquery.com/Plugins/Validation/validate


0 dla odpowiedzi № 3

Dzięki @Rory osiągnąłem to, co chciałem. Ponieważ jquery.validator.unobtrusive obsługuje wywołanie jquery.validate i nie zapewnia sposobu na przechwycenie czegokolwiek (tak, to jest wtyczka Microsoft ...), rozwiązaniem jest użycie submitHandler opcja taka jak sugerowała Rory, ale przez cały czas setDefault metoda:

   if (typeof ($.validator) != "undefined") {
$.validator.setDefaults({
submitHandler: function (form) {
if (someCondition)
return true; //post
else
return false; //dont post
}

});
}