2009-08-03 8 views

Répondre

16

Lorsque les touches sont touchées, notez l'heure. Puis comparez avec le temps que vous avez noté last fois la clé (s) ont été touchées.

Si la différence est inférieure à votre seuil, considérez-le comme un double. Sinon, ne le faites pas. exemple grossier:

var delta = 500; 
var lastKeypressTime = 0; 
function KeyHandler(event) 
{ 
    if (String.fromCharCode(event.charCode).toUpperCase()) == 'T') 
    { 
     var thisKeypressTime = new Date(); 
     if (thisKeypressTime - lastKeypressTime <= delta) 
     { 
     doDoubleKeypress(); 
     // optional - if we'd rather not detect a triple-press 
     // as a second double-press, reset the timestamp 
     thisKeypressTime = 0; 
     } 
     lastKeypressTime = thisKeypressTime; 
    } 
} 
+0

Cette solution utilise la touche Ctrl. Il ne dit pas qu'il a besoin de ça (même si cela a du sens pour moi). –

+0

** @ Josh Stodola: ** HA! Montre comment j'ai lu attentivement ... Saw "Char T", lire "Ctrl T" ... oups! – Shog9

+0

fonctionne très bien merci! – ak3nat0n

10

Avoir une variable (peut-être first_press) que vous définissez à true lorsqu'un événement keypress arrive, et commencer une minuterie qui réinitialise la variable false après un certain laps de temps (mais rapide vous voulez les appuyer sur les touches).

Dans votre événement de pression de touche, si cette variable est vraie, appuyez deux fois sur.

Exemple:

var first_press = false; 
function key_press() { 
    if(first_press) { 
     // they have already clicked once, we have a double 
     do_double_press(); 
     first_press = false; 
    } else { 
     // this is their first key press 
     first_press = true; 

     // if they don't click again in half a second, reset 
     window.setTimeout(function() { first_press = false; }, 500); 
    } 
} 
+0

ET vous pouvez faire "demi-seconde" une valeur persistante configurable que les utilisateurs peuvent changer. Règles d'utilisabilité – montrealist

+0

-1 Cela fonctionne pour * chaque * touche enfoncée. –

+0

Je n'essayais pas de lui fournir une solution d'accueil. Juste lui montrer l'idée générale. –

Questions connexes