[英]Javascript addEventListener keyDown stops input from being editable
I've been making a game, and I want an input box beside my canvas. 我一直在做游戏,我想在画布旁边放一个输入框。 I have finally figured out that 我终于想通了
document.body.addEventListener("keydown", function(e){
e.preventDefault();
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function(e){
e.preventDefault();
keys[e.keyCode] = false;
});
has stopped me from being able to edit the input box 使我无法编辑输入框
<input type='text' id='input' value='asdf'>
Any solutions where both can work? 任何解决方案都可以在哪里工作? I've tried putting the addEventListener on a div surrounding the canvas' yet it still doesn't work, unless I comment out that code. 我曾尝试将addEventListener放在画布周围的div上,但是除非我注释掉该代码,否则它仍然不起作用。
You can check if the element that the event was triggered on is not input. 您可以检查是否未输入触发事件的元素。
Here is the change to your code: 这是您的代码更改:
var keys = {} document.body.addEventListener("keydown", function(e){ if (e.srcElement.nodeName !== 'INPUT') { e.preventDefault(); keys[e.keyCode] = true; } }); document.body.addEventListener("keyup", function(e){ if (e.srcElement.nodeName !== 'INPUT') { e.preventDefault(); keys[e.keyCode] = false; } });
<input type='text' id='input' value='asdf'>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.