我有以下代码,它将eventListener添加到HTML textarea。它应该控制日志记录被按下的键码,如果keyCode是==到17(CTRL),控制台日志"你按下了CTRL。"。出于某种原因,当我在textarea中按CTRL时,它不是控制台记录被按下的keyCode,也不是"你按下了CTRL。"如果我按下" A"例如,控制台日志返回" 97"哪个是对的。它也适用于所有其他字母。
以下是代码:
document.getElementById("msgBox").addEventListener("keypress",function(e){
console.log(e.keyCode);
if(e.keyCode == 17){
console.log("You pressed CTRL.");
}
});
我做错了什么?
更新:它还没有使用其他特殊键,例如" shift,Fx,alt,home等。
textarea的HTML:
<textarea id="msgBox" placeholder="Enter your message" autofocus></textarea>
答案 0 :(得分:3)
出于某种原因,特殊键不适用于keypress
事件,但它们适用于keydown
事件。
答案 1 :(得分:1)
请改为:( e.which == 17)
答案 2 :(得分:0)
检查e.ctrlKey
。
请参阅https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/ctrlKey
上的MDN文档如果您想要一种简单的方法来管理按键,您可以使用像https://dmauro.github.io/Keypress/
这样的专用库