如何在onKeyDown之后检查onKeyPress是否未被触发?

时间:2016-08-06 07:38:08

标签: javascript html

某些键会触发onKeyDown和onKeyPress事件,例如A,而某些键只触发onKeyDown,例如SHIFT。如何检查onKeyPress 是否已针对特定密钥触发?我需要在按下按键后立即检测到它,所以由于延迟,我不能使用onKeyUp。

1 个答案:

答案 0 :(得分:1)

在这种情况下你只能使用onKeyUp,因为在onKeyDown之后和onKeyUp之前触发onKeyPress。你可以存储onKeyPress是否已经为这样的键触发了:

var keyPressedFired = false;

document.addEventListener("keypress", function(e) {
    keyPressedFired = true;
});

document.addEventListener("keyup", function(e) {
    if (!keyPressedFired) {
        alert('KeyPress not fired this key');
    }

    keyPressedFired = false;
});

运行代码段,点击其下方的白色部分,然后按SHIFT