Skip to content Skip to sidebar Skip to footer

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 b

Solution 1:

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;
functionKeyHandler(event)
{
   if ( String.fromCharCode(event.charCode).toUpperCase()) == 'T' )
   {
      var thisKeypressTime = newDate();
      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;
   }
}

Solution 2:

Have a variable (perhaps first_press) that you set to true when a keypress event happens, and start a timer that will reset the variable to false after a set amount of time (however fast you want them to press the keys).

In your keypress event, if that variable is true then you have a double press.

Example:

var first_press = false;
functionkey_press() {
    if(first_press) {
        // they have already clicked once, we have a doubledo_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, resetwindow.setTimeout(function() { first_press = false; }, 500);
    }
}

Solution 3:

I know is too late to answer but here goes how I have implemented that:

let pressed;
let lastPressed;
let isDoublePress;

consthandleDoublePresss = key => {
    console.log(key.key, 'pressed two times');
}

consttimeOut = () => setTimeout(() => isDoublePress = false, 500);

constkeyPress = key => {
    pressed = key.keyCode;

    if (isDoublePress && pressed === lastPressed) {
        isDoublePress = false;
        handleDoublePresss(key);
    } else {
        isDoublePress = true;
        timeOut();
    }

    lastPressed = pressed;
}

window.onkeyup = key =>keyPress(key);

Post a Comment for "How To Trap Double Key Press In Javascript?"