Catégorie | dev

jQuery: l’évenement “submit” n’est pas capturé

Posted on 15 December 2010 by adrien

Travaillant actuellement sur un projet mettant en œuvre du jQuery, je suis tombé sur un problème qui m’a fait perdre du temps lors de la mise en prod. En effet ce problème ne se posait pas lors des tests en développement mais apparaissait sur le serveur de production (je ne sais pas pourquoi d’ailleurs).

Le problème se trouvait sur un formulaire simple de login que je gère en ajax. Sur ce formulaire, je pose un handler sur l’évenement submit de la form pour traiter le post en arrière plan et ainsi ne pas faire recharger la page si je dois afficher un message d’erreur (classique).
Seulement ici rien ne se passait du coté javascript et le formulaire était donc envoyé de façon normal.

Et la raison est très simple: il ne faut pas nommer son input[type=submit] en “submit”.

En clair: le code faux:

<form id="myform" action="connexion.html" method="post">
   <input type="text" name="login" />
   <input type="password" name="pwd" />
   <input type="submit" name="submit" value="Connexion" />
</form>

Et le code qui fonctionnera:

<form id="myform" action="connexion.html" method="post">
   <input type="text" name="login" />
   <input type="password" name="pwd" />
   <input type="submit" name="peu_importe_mais_pas_submit" value="Connexion" />
</form>

En complément, le code jQuery:

$('#myform').submit(function() {
   $.post($('#myform').attr('action'), $("#myform").serialize(),function(data){
      var response = jQuery.parseJSON(data);
      //traiter la reponse
   });
   return false;
});

En espérant que cela pourra aider quelqu’un…

Voir aussi:
La documentation officielle de jQuery qui m’a mis sur la voie.

1 commentaires pour cet article

  1. Batysta Says:

    Ca aura en effet aidé quelqu’un !

Commenter

(obligatoire)