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