web-dev-qa-db-fra.com

Comment déclencher la fonction jQuery uniquement si le formulaire est valide

J'ai une fonction jQuery liée à mon bouton d'envoi comme ceci:

$(function () {
    $('#signupform').submit(function () {
        alert('test');
    });
});

Cependant, il se déclenche que le formulaire soit valide ou non. Mon modèle est décoré de diverses DataAnnotations et la validation côté client fonctionne bien, mais je ne veux que cette fonction jQuery se déclenche si le formulaire a été validé. Comment puis-je y parvenir?

EDIT: Pour clarifier, j'utilise MVC DataAnnotations + le javascript discret de jQuery pour gérer la validation côté client. Je n'ai pas écrit mes propres routines de validation javascript. La validation jQuery intégrée fait un excellent travail de validation du formulaire, mais j'ai juste besoin de savoir comment obtenir les résultats de cette validation en valeur booléenne dans ma propre fonction.

49
Scott

Si vous utilisez jquery valider une validation discrète, vous pouvez:

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
120
Darin Dimitrov
$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});

Notez que la fonction validateForm() serait celle que vous utilisez dans le navigateur pour tester la validation. EDIT: Il s'agit bien de la $(this).valid() de jQuery.

REMARQUE: Pour clarifier la question, la réponse ci-dessus est un moyen d'arrêter la soumission du formulaire lors de la validation, mais pas la technique souhaitée ( validation jQuery valid () ). Voir la réponse de Darin Dimitrov pour plus de détails.

De plus, en relisant la question initiale, l'intention était exactement le contraire de ce que j'ai décrit à l'origine. J'ai donc édité pour démontrer une réponse fonctionnelle à la validation, pas comment empêcher la soumission d'un formulaire.

8
Jared Farrish