javascript - 按键,但当输入或文本区域处于焦点时不按键

标签 javascript html

我正在使用下面的代码:

$(document).keypress(function (e) {
    if (e.which === 68 || e.which === 100) {
        doStuff();
    }
});

我想要的是捕获“D”键作为我页面中某个功能的快捷方式。问题是,此页面有输入和文本区域控件,当我在此控件上键入时,会调用“doStuff()”函数。

如何避免?仅当用户未在可编辑控件中键入任何内容时,我才希望捕获“D”键。

谢谢!

最佳答案

除了e.target之外,您还可以测试当前事件元素是输入还是文本区域:

$(document).keypress(function (e) {
  var focussedTag = document.activeElement && document.activeElement.nodeName;
  if( focussedTag === 'INPUT' || focussedTag === 'TEXTAREA' ) {
    return;
  }
  if (e.which === 68 || e.which === 100) {
    doStuff();
  }
} );

fiddle :https://jsfiddle.net/e1qtapo6/

关于javascript - 按键,但当输入或文本区域处于焦点时不按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905978/

相关文章:

Javascript 创建对象结构

javascript - 如何启动和停止 CSS 动画?

php - 更改域名导致我的图像无法在 WordPress 中加载

javascript - 如何使 jQuery POST 函数打开新页面?

javascript - 使用 html 代码和 javascript 代码作为 flutter web 中的小部件

javascript - 单击清除文本区域

javascript - javascript/jquery 有可以创建的事件模型吗?

css - 如何使用 CSS 制作图像叠加层,以便我可以使用铅笔图标来编辑信息,就像 Facebook 那样?

asp.net - 当从相对定位更改为绝对定位时,阻止菜单变得凌乱

html - Jupyter 笔记本 : Hide/fold a paragraph of text as "hints"