keyUp在没有keyPress的情况下触发

时间:2019-02-02 17:48:06

标签: javascript keypress keyup

这是我第一次使用Javascript,所以请不要嘲笑我。如果某个键保持一定时间,我将尝试创建一个事件触发器,如果​​用户在间隔时间结束之前释放该键,则不会这样做。

var poppedUp = false;

$(document).ready(function () {
    checkLetter();
});

function checkLetter() {
    var interval;

    $(document).on('keypress', function(e) {
        if (interval == null && characters.test(String.fromCharCode(e.keyCode))) {
            console.log('keypress');
            interval = setInterval(function() {
                popUp();
                called = true;
            }, 400);
        }
    }).keyup(function(e) {
        clearInterval(interval); 
        console.log('keyup');
        poppedUp = false;
        interval = null;
    });
}

function popUp() {
    if (!poppedUp) {
        document.querySelector(".modal-popup").style.display = "flex";
        poppedUp = true;
    }

    document.addEventListener('click', function()
    {
        document.querySelector(".modal-popup").style.display = "none";
    });
}

我第一次按键时,控制台会正确记录keyPress和keyUp。第二次(如果我只是按下并立即释放),它仅记录keyUp。然后重复此模式。 Here are the console logs.

0 个答案:

没有答案