如何从tabindex忽略HTML元素?


361

HTML中是否有任何方法告诉浏览器不允许对特定元素进行标签索引?

在我的页面上,尽管有一个用jQuery渲染的杂耍,但是当您通过Tab进行选项卡浏览时,您会在按下Tab键控件移至页面上的下一个可见链接之前获得大量的Tab键按下,因为所有通过Tab键浏览的内容都被隐藏了。视觉上的用户。

Answers:


591

您可以使用tabindex="-1"

W3C HTML5规范支持负tabindex的值:

如果值为负整数
,则用户代理必须设置元素的tabindex焦点标志,但不允许使用顺序焦点导航访问该元素。


请注意,尽管这是HTML5功能,可能无法在旧的浏览器上使用。
为了符合W3C HTML 4.01标准(从1999年开始),tabindex必须为正数。


以下是纯HTML中的用法示例。

<input />
<input tabindex="-1" placeholder="NoTabIndex" />
<input />


12
看来Google Chrome浏览器不支持-1,这很有意义,因为从技术上讲,tabIndex仅根据link支持0 -32767 W3。所以当我这样做时 我用了500。但工作。
跳蚤2012年

38
@Flea从版本23开始,Google Chrome浏览器在tabindex上支持-1。不知道发生在多久之前,也许是在23年前。我在Chrome 23,Firefox 18,IE8,IE9和Opera 12.11中测试了“ -1”,并且可以全面使用。
jkupczak 2013年

5
我已经编辑了答案,以链接到更新的HTML5规范。tabindex现在允许具有负值。
James Donnelly 2013年

1
@JamesDonnelly谢谢您的编辑。我重新添加了对W3C HTML4规范的引用,以实现浏览器的兼容性。
Martin Hennings 2013年


121

即使tabindex在规范和HTML中都是小写字母,也不要忘记在Javascript /称为DOM的DOM中tabIndex

不要不介意尝试弄清楚为什么以编程方式更改的选项卡索引调用element.tabindex = -1无法正常工作。使用element.tabIndex = -1


34
这似乎应该是评论而不是答案。
DrCord

47
嗯,我很高兴阅读它,如果把它作为评论掩埋,我可能会想念它。
MalcolmOcean'6

10

如果这些元素自然是按Tab键顺序排列的元素(例如按钮和锚点),则使用tabindex = -1从Tab键顺序中删除它们是一种可访问性。如果它们提供重复的功能,则可以将它们从制表符顺序中删除是可以的,请考虑将aria-hidden = true添加到这些元素,以便辅助技术将其忽略。


8

如果您在不支持的浏览器中工作 tabindex="-1",只需给那些需要跳过的事情设置一个很高的标签索引,或许就能摆脱困境。例如,tabindex="500"基本上将对象的选项卡顺序移动到页面的末尾。

我这样做是为了获得一个较长的数据输入表单,并在其中插入了一个按钮。这不是人们经常点击的按钮,所以我不希望他们不小心将其切换到该按钮并按Enter。disabled因为它是一个按钮,所以不起作用。


5

像“ tabIndex = -1”这样的hack不适用于Chrome v53。

这适用于chrome和大多数浏览器:

function removeTabIndex(element) {
    element.removeAttribute('tabindex');
}
<input tabIndex="1" />
<input tabIndex="2" id="notabindex" />
<input tabIndex="3" />
<button tabIndex="4" onclick="removeTabIndex(document.getElementById('notabindex'))">Remove tabindex</button>


这不是简单地为元素分配默认的标签索引,而不是禁用标签吗?
Lawyerson

@Lawyerson不,它实际上禁用了制表符,因为它自己解释了“ removeAttribute”。您是否尝试过,但结果不同?
Val

2
我尝试了没有效果。默认情况下,浏览器允许您按输入出现在页面上的顺序来进行制表,即使没有在其上设置tabindex,因此对我来说,仅删除属性实际上并不能完全禁用制表。此外,我要使用的输入一开始就没有“ tabindex”属性。
Lawyerson

运行该代码段,notabindex就像tabIndex=5按按钮后一样,可以跳至该框。不是市长的问题,但仍然没有使其完全“无法解决”。
MikaelDúiBolinder

由于您使用的是骆驼保护套,因此可能无法正常工作。应该全部小写tabindex
dman


2

只需将属性添加disabled到元素(或使用jQuery为您完成)。禁用将根本无法集中或选择输入。


哪个版本的Chrome?
Yaakov Ainspan '16

Chrome 49.0.2623.75(64位)。
菲利克斯·夏娃

我的版本是51.0.2704.103。看看这个小提琴。您可能从未知道过错误的代码。
Yaakov Ainspan '16

@AtulChaudhary,它不起作用吗?您仍然可以集中精力吗?
Yaakov Ainspan '16

一旦禁用了字段,它们仍保持禁用状态,这在IOS9中是一个问题,但似乎在IOS10中起作用
Atul Chaudhary
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.