2009-11-17 3 views
2

Je vais avoir du mal à comprendre pourquoi un événement click binded le document serait déclenché par une soumission du formulaire « entrer ». Voici la page de test je regarde:Document déclenché sur la soumission du formulaire « entrer »

<html> 
<head> 
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js'></script> 
    <script type='text/javascript'> 
     $(function(){ 
      // Form Submission 
      $('form').bind('submit', function(event){ 
       console.log('Submit: ', event); 
       return false; 
      }); 
      // Input events 
      $('input[type=text]').bind('keyup', function(event){ 
       console.log('Keyup: ', event); 
      }).bind('keydown', function(event){ 
       console.log('Keydown: ', event) 
      }); 
      // Doc Click 
      $(document).click(function(event){ 
       console.log('Document Click: ', event); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form action='test.html' method='GET'> 
     <input type='text'> 
     <input type='submit' value='Submit'> 
    </form> 
</body> 
</html> 

de Toute idée?

+0

-vous cliquez sur le bouton soumettre avec un dispositif de pointage (une souris) ou avez-vous soumettez le formulaire en appuyant sur la touche Entrée de votre clavier? – anddoutoi

+0

Grâce à une touche d'entrée, pensé que je l'ai eu dans la question, mis à jour la faute de frappe. –

Répondre

3

Modifier type = 'submit' en type = 'bouton'. Testé sur IE8 et FF3.5.

+0

C'est une bonne solution, mais pourquoi cela se passe-t-il? –

+0

Je l'ai supprimé parce que cela fonctionne quand vous voulez utiliser entrer pour soumettre le formulaire mais pas le bouton de soumission. Vous pouvez toutefois fournir un autre appel à l'action de soumission à partir de l'événement onclick du bouton. $ ('input [type = bouton]'). Click (function() {$ ('form'). Submit();}); Cependant, je ne sais pas pourquoi l'événement click est appelé pour votre action, votant la question pour obtenir plus de réponses. Si ma solution de contournement fonctionne pour vous (avec les changements supplémentaires dans ce commentaire), n'hésitez pas à voter un peu. – SimonDever

+1

Mm après un peu plus de recherche, il semble que la touche d'entrée dans un formulaire appelle le bouton d'envoi à appuyer qui déclenche le clic de document. Il n'y aura aucun moyen d'éviter cela tant que vous n'aurez pas changé le type de soumission en quelque chose comme ci-dessus ou un bouton avec un événement onclick: D – SimonDever

0

Le formulaire sera envoyé lorsque vous avez seulement 1 champ et que vous appuyez sur Entrée. Si vous mettez plus d'un champ de saisie, il ne le fera pas. C'est un comportement dépendant du navigateur.

Questions connexes