How to trap double key press in javascript?

ak3nat0n picture ak3nat0n · Aug 3, 2009 · Viewed 11.8k times · Source

I would like to be able to trap the double key press (for the Char T for example) in order to do some special processing.I would like the key presses to happen fast enough to not be interpreted as two separate presses, just like the double click. Any ideas how i can achieve this?

Answer

Shog9 picture Shog9 · Aug 3, 2009

When the key(s) are hit, make a note of the time. Then compare it with the time you noted the last time they key(s) were hit.

If the difference is within your threshold, consider it a double. Otherwise, don't. Rough example:

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;
   }
}