捕获 DIV 元素上的按键(或按键)事件

IT技术 javascript jquery html scripting keypress
2021-02-05 16:37:38

你如何在 DIV 元素上捕获按键或按键事件(使用 jQuery)?

需要什么才能使 DIV 元素成为焦点?

3个回答

(1) 设置tabindex属性:

<div id="mydiv" tabindex="0" />

(2) 绑定到keydown:

 $('#mydiv').on('keydown', function(event) {
    //console.log(event.keyCode);
    switch(event.keyCode){
       //....your actions for the keys .....
    }
 });

将焦点设置为开始:

$(function() {
   $('#mydiv').focus();
});

要删除 - 如果您不喜欢它 -在 CSS 中div设置焦点边框outline: none

有关更多可能性,请参阅键码keyCode

所有代码都假设您使用 jQuery。

#
tabindex 是关键部分,但不要将其设置为“0”以外的任何值。将它设置为 0 以上的任何内容都会使视障用户的屏幕阅读器混乱(它将跳过页面上的所有内容并直接转到 0 以上的任何 tabindex)。tabindex="0" 使其“可制表”。您可以使用 tabindex="0" 拥有无限元素
2021-03-12 16:37:38
+1 tabindex 是这里使 div 成为“可选”的关键点。JQuery 不是必需的,同样的事情适用于 Angular 以及(我想)使用普通的 javascript 事件。
2021-03-19 16:37:38
浏览器对此有何支持?
2021-03-22 16:37:38
优秀的!我错过了 tabindex 属性,可能是因为 DIV 除非有 tabindex,否则无法获得焦点。谢啦!救了我!编辑:也适用于 React
2021-03-28 16:37:38
也适用于 <pre> !
2021-04-11 16:37:38

这里是纯 JS 的例子:

document.querySelector('#myDiv').addEventListener('keyup', function (e) {
  console.log(e.key)
})
#myDiv {
  outline: none;
}
<div 
  id="myDiv"
  tabindex="0"
>
  Press me and start typing
</div>

tabindex HTML 属性指示其元素是否可以聚焦,以及它是否/在何处参与顺序键盘导航(通常使用Tab键)。阅读MDN Web 文档以获取完整参考。

使用jQuery

使用 JavaScript

我实际上发现这是在寻找焦点事件触发的问题,当 div 上的控件失去焦点说要单击 div 滚动条时,只需将制表位添加到 div 即可解决,非常感谢
2021-03-28 16:37:38