div绑定键盘事件

作者: 前端沐先生 | 来源:发表于2017-12-27 11:00 被阅读262次

在给如div等元素绑定键盘事件(如keydown)时, 会发现绑定是失效的。

解决方法:

给当前元素增加 tabindex 属性:

<div tabindex="-1"></div>

原理:

div等非输入性质的元素(与其对应的可输入性元素有input, textarea), 是不可被聚焦的。 所以无法监听其的键盘事件。

而通过增加 tabindex 属性,可以指定该元素可触焦。

关于tabindex(引自MDN):

tabindex 全局属性 是个整数,表示元素(如果可聚焦)是否能够接受输入焦点。 如果它应该参与键盘序列导航,那么就是它的位置。

它可以设为多种值:

tabindex=负值 (通常是tabindex=“-1”),表示元素是可聚焦的,但是不能通过键盘导航来访问到该元素,用JS做页面小组件内部键盘导航的时候非常有用。

tabindex="0" ,表示元素是可聚焦的,并且可以通过键盘导航来聚焦到该元素,它的相对顺序是当前处于的DOM结构来决定的。

tabindex=正值,表示元素是可聚焦的,并且可以通过键盘导航来访问到该元素;它的相对顺序按照tabindex 的数值递增而滞后获焦。如果多个元素拥有相同的 tabindex,它们的相对顺序按照他们在当前DOM中的先后顺序决定。

根据键盘序列导航的顺序,值为 0 、非法值、或者没有 tabindex 值的元素应该放置在 tabindex 值为正值的元素后面。

如果我们在 <div> 上设置了 tabindex 属性,它的子元素内容不能使用箭头键来滚动,除非我们在内容上也设置 tabindex。

注:tabindex 的最大值不应超过 32767。如果没有指定,它的默认值为 -1。

相关链接:

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

作者:@拭目以待表格管理开源项目

Want to know How To Make Love?I know HTML!

相关文章

  • div绑定键盘事件

    在给如div等元素绑定键盘事件(如keydown)时, 会发现绑定是失效的。 解决方法: 给当前元素增加 tabi...

  • 事件绑定、事件冒泡与捕获

    一、事件绑定事件绑定又称事件委托,事件代理,可以给同一个div绑定多个事件 非IE: IE: 绑定事件兼容写法:(...

  • DOM 记录

    绑定 for 点击事件 if div 不加载 hidden

  • js的基础知识与应用(六)

    键盘的事件 拖拽: 事件捕获 (没有官方的叫法。) 事件绑定 解除事件绑定 ***** this的错误用法: DO...

  • jQuery基础(三)—事件篇-----事件的绑定与解绑

    1、on()的多事件绑定 on()的多事件绑定之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一...

  • dom事件对象

    事件定义 常见事件 常见绑定方法 事件对象 鼠标键盘事件对象

  • 「js」点击事件的3种实现与事件覆盖

    1.行内绑定点击事件 点我呀 该方法只能绑定一个处理函数。 2.onclick绑定点击事件 运行结果,点击div时...

  • 按键:你不知道的点

    需求按下esc键 让一个弹出框消失 会想到在一个div上,绑定keydown 事件,可是在div上绑定keydo...

  • 53-Vue-watch属性

    这里主要实现监听数据变化进行某些操作,两种方法对比 一.监听键盘事件 双向数据绑定 添加数据 绑定键盘监听事件 添...

  • 事件高级

    1. 事件绑定 给元素添加一个事件。//div.onclick = function(){};上面这种事件的添加方...

网友评论

    本文标题:div绑定键盘事件

    本文链接:https://www.haomeiwen.com/subject/cloygxtx.html