203 votes

Utilisation de JQuery - empêcher la soumission du formulaire

Comment empêcher la soumission d'un formulaire à l'aide de jquery ?

J'ai tout essayé - voir 3 options différentes que j'ai essayées ci-dessous, mais tout ne fonctionnera pas :

     $(document).ready(function() { 

            //option A
            $("#form").submit(function(e){
                e.preventDefault();
            });

            //option B
            $("#form").submit(function(e){
                stopEvent(e);
            });

            //option C
            $("#form").submit(function(){
                return false;
            });
    });

Qu'est-ce qui ne va pas ?

Mise à jour - voici mon html :

     <form id="form" class="form" action="page2.php" method="post"> 
       <!-- tags in the form -->
       <p class="class2">
           <input type="submit" value="Okay!" /> 
       </p>
    </form>

Y a-t-il quelque chose qui ne va pas ici ?

300voto

Philip Fourie Points 12889

Deux choses ressortent :

  • Il est possible que le nom de votre formulaire ne soit pas form . Référez-vous plutôt à la balise en laissant tomber le #.
  • De plus, le e.preventDefault est la syntaxe JQuery correcte, par exemple

         //option A
        $("form").submit(function(e){
            e.preventDefault();
        });
    

L'option C devrait également fonctionner. Je ne connais pas l'option B

Un exemple complet :

 <html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

        <script type='text/javascript'>
         $(document).ready(function() {
            //option A
            $("form").submit(function(e){
                alert('submit intercepted');
                e.preventDefault(e);
            });
        });
        </script>
    </head>

    <body>
        <form action="http://google.com" method="GET">
          Search <input type='text' name='q' />
          <input type='submit'/>
        </form>
    </body>
</html>

41voto

Artem Kiselev Points 583

Vous avez probablement peu de formulaires sur la page et l'utilisation de $('form').submit() ajoute cet événement à la première occurrence du formulaire sur votre page. Utilisez plutôt le sélecteur de classe ou essayez ceci :

 $('form').each(function(){
    $(this).submit(function(e){
        e.preventDefault();
        alert('it is working!');
        return  false;
    })
}) 

ou une meilleure version de celui-ci :

 $(document).on("submit", "form", function(e){
    e.preventDefault();
    alert('it works!');
    return  false;
});

23voto

WereWolf - The Alpha Points 49671

Pour empêcher l'utilisation par défaut/empêcher la soumission de formulaire

 e.preventDefault();

Pour arrêter le bouillonnement d'événements, utilisez

 e.stopPropagation();

Pour empêcher la soumission de formulaire, « return false » devrait également fonctionner.

5voto

vinxxe Points 51

J'ai eu le même problème et j'ai résolu de cette façon (pas élégant mais ça marche) :

 $('#form').attr('onsubmit','return false;');

Et cela a l'avantage, à mon avis, que vous pouvez inverser la situation à tout moment :

 $('#form').attr('onsubmit','return true;');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X