keyUp запускается без keyPress - PullRequest
0 голосов
/ 02 февраля 2019

Я впервые работаю с 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.Этот образец затем повторяется. Вот журналы консоли.

...