Давайте разберемся с этим.Происходит то, что ваше условие if немедленно проверяет, была ли нажата клавиша, и так было e.keyCode
всегда 13
.
Самый простой способ решить эту проблему - использовать следующий бит кода:
let input = document.createElement("input");
let isPressed = false;
input.value = "Click on this field and press Enter";
document.addEventListener("keydown", function(e) {
if (event.keyCode === 13 && isPressed) {
let div3 = document.createElement("div");
div3.innerHTML = "You have pressed Enter 2 times";
document.body.appendChild(div3);
}
});
input.addEventListener("keydown", function(e){
event.stopPropagation()
if(event.keyCode === 13){
if ( isPressed ) {
return;
} else {
let div2 = document.createElement("div");
div2.innerHTML = "Press Enter once again";
isPressed = true;
document.body.appendChild(div2);
}
}
});
document.body.appendChild(input);
Вы можете попробовать это здесь .Вы можете изменить это по своему вкусу.:)
Имея в виду ваш исходный код, здесь - это обновленная версия.
Чтобы понять, как работает этот бит, все просто: когда естьсобытие в элементе a
, а оболочка для этого элемента - b
, событие проходит через процесс, известный как пузыри событий (потому что пузыри поднимаются вверх ).
В связи с этимпрослушиватель второго события на document
выполняется.
Чтобы этого не произошло, вы можете использовать .stopPropagation()
для объекта event
.