So I have two input fields and some JavaScript code that writes the current value after each keystroke into a paragraph element. Now, if we use the KeyUp event, everything gets updated immediately but if we use KeyDown we observe that we only see the last n-1 characters after the n-th keystroke. Why is that?
var inputOne = document.getElementById("inputOne");
var pOne = document.getElementById("pOne");
var inputTwo = document.getElementById("inputTwo");
var pTwo = document.getElementById("pTwo");
inputOne.addEventListener("keydown", event => {
pOne.innerHTML = event.target.value;
});
inputTwo.addEventListener("keyup", event => {
pTwo.innerHTML = event.target.value;
});
#pOne {
border: 1px solid green;
}
#pTwo {
border: 1px solid red;
}
<div id="exercise">
<div>
keydown <br> inputOne) <input id="inputOne" type="text"> pOne)
<p id="pOne"></p>
</div>
<div>
keyup <br> inputTwo) <input id="inputTwo" type="text"> pTwo)
<p id="pTwo"></p>
</div>
</div>
JsFiddle Example: https://jsfiddle.net/45gshtom/2/