addEventListener('keypress', ({keyCode}) => {
switch(keyCode){
case 87: //up
alert('press')
break;
}
})
Why is my keypress not working, if I change it to keydown, it works but keypress does not
CodePudding user response:
The
keypressevent is fired when a key that produces a character value is pressed down.
(bold added for emphasis)
The reason it does not work is that the Up key does not produce a character. Try here:
document.addEventListener('keypress', ({keyCode}) => {
console.log("fired", keyCode);
});
Click here to focus then try pressing a letter key
and then try something else like up, or backspace, or Alt.
To react to events of other keys use other events such as keydown, or keyup.
Do note that keypress itself is deprecated, MDN has an explicit guidance for that:
Warning: Since this event has been deprecated, you should use
beforeinputorkeydowninstead.
CodePudding user response:
keypress is now deprecated (see documentation here)
You should now either use keydown or keyup
According to the documentation :
The keyup event is fired when a key is released.
The keydown event is fired when a key is pressed.
Example :
const keyupInput = document.getElementById('keyup-button')
const keydownInput = document.getElementById('keydown-button')
keyupInput.addEventListener('keyup', ({key, code}) => {
console.log('keyup', key, code)
})
keydownInput.addEventListener('keydown', ({key, code}) => {
console.log('keydown', key, code)
})
<label>keyup</label>
<input id="keyup-button" />
<label>keydown</label>
<input id="keydown-button" />
CodePudding user response:
keypress event is deprecated. Although some browsers still support it, it is not recommended to use. Instead you can use keydown event.
MDN Reference
And most importantly it supports of keys that produce a character value are alphabetic, numeric, and punctuation keys. To work with arrow key, you should use keyup or keydown event as your requirement. Here is the example of keydown:
document.addEventListener('keydown', ({keyCode}) => {
switch(keyCode){
case 38: //key up in mac
console.log('pressing key 38');
alert('press')
break;
}
})
