18 votes

Angular-UI $dialog et soumettre le formulaire en appuyant sur la touche entrée

De ce que je peux voir, la façon recommandée de gérer la touche Entrée dans les dialogues en AngularJS est de placer une balise

et un bouton de soumission à l'intérieur du dialogue.

Très bien, mais si vous utilisez Angular-UI et leur service $dialog, le formulaire se fermera simplement silencieusement lorsque vous appuierez sur Entrée. il n'y a aucun moyen d'intercepter cela. même si vous attachez des gestionnaires à ng-click ou ng-submit, le formulaire se fermera simplement sans renvoyer de résultat.

Y a-t-il quelque chose d'autre que je devrais faire ?

[Modifier]

Je l'ai résolu, j'ai dû préciser explicitement que mon bouton "annuler" était de type "button". Il semble que cela se configure par défaut à "submit" ?

Il n'y avait donc pas de réel problème mis à part mes compétences en html :)

33voto

Roger Alsing Points 5542

Pour répondre à ma propre question. Les boutons semblent être par défaut de type submit(?) et si je les définis explicitement comme type="button", alors ils ne déclencheront pas de retour en arrière lorsque l'on appuie sur Entrée dans un champ de saisie d'un formulaire.

     Annuler
     OK

Ainsi, en appuyant sur la touche Entrée dans le champ de saisie, le ng-click du bouton OK sera déclenché.

Et comme vous, les hackers html, l'avez déjà compris, cela n'avait rien à voir avec les boîtes de dialogue ni vraiment avec angularjs, c'était un problème de formulaire html et mon manque de compétences web...

1voto

Sabin Bogati Points 36

Je crois que c'est parce que votre bouton "CLOSE" n'est pas défini en type="button", et je PENSE que c'est le premier élément qui a le focus, donc en appuyant sur Entrée, vous entrez dans ce bouton, qui par défaut, soumettra le formulaire. Ajoutez type="button" et cela devrait résoudre le problème.

Aussi pour information, la dernière version de Angular Material fait automatiquement ajouter type="button" par défaut à md-button (sauf si vous précisez type="submit") pour éviter ce type de situation

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