Fire on enter
Un petit snippet JavaScript/jQuery qui déclenche une action dès que la touche Entrée est pressée dans un champ.
$("[fire-on-enter]").not('.fire-on-enter-bound').on("keypress", function(e) {
if (e.which == 10 || e.which == 13) eval($(this).attr("fire-on-enter"));
}).addClass("fire-on-enter-bound");
Voici un exemple d'utilisation :
<input type="text" fire-on-enter="doSomething()">
À quoi sert fire-on-enter-bound ? J'utilise régulièrement Ajax pour recharger dynamiquement du contenu et des contrôles, puis je relance chaque fois le JavaScript pour lier l'événement keypress aux contrôles nouvellement chargés. Problème : les éléments déjà liés reçoivent alors un second keypress, et un seul appui sur Entrée déclenche la fonction deux fois. D'où la classe fire-on-enter-bound, ajoutée aux contrôles déjà liés, qui empêche de lier l'événement une deuxième fois.