Javascript keyUp在没有按键的情况下触发

Javascript keyUp在没有按键的情况下触发,javascript,dom-events,Javascript,Dom Events,如果一个键被保持一定的时间,我会尝试使用一个事件触发器,如果用户在间隔结束之前释放该键,则不会这样做 const characters = /([AEIOUYNCaeiouync!\\?\\"])/g; var poppedUp = false; $(document).ready(function () { checkLetter(); }); function checkLetter() { var interval; $(document).on('keypr

如果一个键被保持一定的时间,我会尝试使用一个事件触发器,如果用户在间隔结束之前释放该键,则不会这样做

const characters = /([AEIOUYNCaeiouync!\\?\\"])/g;
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。这种模式随后重复。如果每个按键都有两个
keyup
事件,您能否提供一个?