简体   繁体   English

Javascript addEventListener keyDown停止输入的可编辑

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM