Javascript / JQuery Comment empêcher la fonction d’être exécutée de manière répétée en maintenant enfoncée la touche

Supposons que nous ayons le code JQuery suivant:

$(document).bind('keyup', function(e) { arrows=((e.which)||(e.keyCode)); switch (arrows){ case 37: executeMyfunction(); break; } }); 

Si un utilisateur maintient la touche de direction gauche (37) enfoncée, executeMyfunction () est appelé à plusieurs resockets.

Comment puis-je empêcher cela?

Je pensais que keyup ne se déclencherait que si key était relâché mais que cela ne fonctionnait pas (c’est pourquoi j’utilise keyup, keydown ne fonctionne pas non plus).

Je crois que vous devez dissocier l’événement. Je pense que cela ne devrait pas être keyup, mais presser ou presser.

Probablement quelque chose comme ça.

$ (document) .bind (‘keydown’, fonction (e) {

flèches = ((e.which) || (e.KeyCode));

commutateur (flèches) {

cas 37:

executeMyfunction ();

$ (document) .unbind (‘keydown’);

Pause;

}});

Vous devrez relier la fonction sur keyup si vous souhaitez utiliser à nouveau l’événement:

$ (document) .bind (‘keyup’, fonction (e) {

commutateur (flèches) {

cas 37: $ (document) .bind (‘keydown’); Pause; }

})

Regardez à: http://api.jquery.com/unbind/

Eh bien, vous pouvez toujours annuler l’appel de votre fonction. Autrement dit, si vous souhaitez que votre fonction soit appelée après le déclenchement de l’événement pendant une courte période.