javascript - JS - 选择输入字段后禁用事件监听器

标签 javascript

我目前正在向我的文档添加一个事件监听器。使用以下代码效果很好:

document.addEventListener('keydown', function(event) 
{
    if(event.keyCode === 68){
        socket.emit('keyPress', {inputId: 'right', state: true});
    }
    else if(event.keyCode === 83){
        socket.emit('keyPress', {inputId: 'down', state: true});
    }
    else if(event.keyCode === 65){
        socket.emit('keyPress', {inputId: 'left', state: true});
    }
    else if(event.keyCode === 87){
        socket.emit('keyPress', {inputId: 'up', state: true});
    }
});

document.addEventListener('keyup', function(event) 
{
    if(event.keyCode === 68){
        socket.emit('keyPress', {inputId: 'right', state: false});
    }
    else if(event.keyCode === 83){
        socket.emit('keyPress', {inputId: 'down', state: false});
    }
    else if(event.keyCode === 65){
        socket.emit('keyPress', {inputId: 'left', state: false});
    }
    else if(event.keyCode === 87){
        socket.emit('keyPress', {inputId: 'up', state: false});
    }
});

但是一旦我选择一个输入字段并键入包含 W、A、S、D 的内容,就会触发 EventListener。

有没有办法在选择输入字段后禁用事件监听器?

最佳答案

是的,检查什么event.target是的,如果它是您的输入元素,则只需返回,如果不是,则让代码继续。

document.addEventListener('keydown', function(event) {
  if(event.target === someReferenceToYourElement){
     return;
  }
  //rest of code
});

关于javascript - JS - 选择输入字段后禁用事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759367/

相关文章:

javascript - TS1148 ~ 如何使用 --module : "import" and typescript 2. x "none"

javascript - javascript 创建的 html 元素未显示在页面上

Javascript 文本字段验证

Javascript 分配原型(prototype)困惑

javascript - 如何访问 firefox 扩展资源

javascript - D3.js ~ 如何过滤包含某些值/单词的数据值?

javascript - 在 javascript 中为日期选择器设置 maxDate 和 minDate,不起作用

javascript - 如何防止在 Ionic Framework 中显示选项按钮?

javascript - 如何在 lodash 中打破 _.forEach?

javascript - Material Angular 在打开 mat-select 时滚动到顶部并隐藏