2009-11-10 4 views
3

J'ai un CMS personnalisé et voudrais ajouter un "menu de raccourcis" déclenché par l'appui sur la touche Ctrl deux fois dans, disons, 300 millisecondes. J'utilise un prototype, donc mon point de départ est évidemment:Détecter double touche Ctrl dans JS

Event.observe(document, 'keypress', function(event) 
    { if(event.keyCode == Event.KEY_XYZ) { show_shortcuts}); 

Mon approche au moment serait alimenter une variable globale avec l'heure actuelle en millisecondes, et la vérification de chaque pression de touche si une pression de touche est passé à moins de 300 il y a quelques millisecondes.

Mais peut-être existe-t-il une solution plus élégante?

+0

ne peux pas croire @Pekka 웃 ont une question sans upvote, était le premier lol, et aussi trouvé utile cette question que je cherchais double changement – ncubica

Répondre

6

Cela devrait fonctionner. Peut-être ajouter d'autres vérifications si aucune autre touche comme Alt ou Shift n'est pressée en même temps. Espérons que c'est explicite, si ce n'est pas juste demander et je fournir des éclaircissements.

var dblCtrlKey = 0; 
Event.observe(document, 'keydown', function(event) { 
    if (dblCtrlKey != 0 && event.keyCode == 17) { 
    alert("Ok double ctrl"); 
    } else { 
    dblCtrlKey = setTimeout('dblCtrlKey = 0;', 300); 
    } 
}); 
+0

Il fonctionne, mais il déclenche également lorsque la touche Ctrl reste enfoncée pour 300 millisecondes. Je vais devoir ajouter un checker "keyup" mais cela servira de base pour cela. À votre santé! –

+0

Il ne tire pas pour moi quand la touche reste enfoncée. Peut-être spécifique au navigateur (J'utilise Opera) – jitter

+1

@Pekka utilise juste 'keyup' à la place ;-) – yckart

Questions connexes