Search code examples
javascriptkeypress

How to trap double key press in javascript?


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?


Solution

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