这是我第一次使用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.