我正在尝试根据具有焦点的当前元素将焦点移动到选项卡序列中的下一个元素。到目前为止,我还没有在我的搜索中找到任何东西。
function OnFocusOut()
{
var currentElement = $get(currentElementId); // ID set by OnFocusIn
currentElementId = "";
currentElement.nextElementByTabIndex.focus();
}
当然,nextElementByTabIndex 是实现此功能的关键部分。如何找到 Tab 序列中的下一个元素?该解决方案需要基于使用 JScript 而不是 JQuery 之类的东西。
最佳答案
我从来没有实现过这个,但我调查了一个类似的问题,下面是我会尝试的。
引用 jQuery 实现,您必须:
- 监听 Tab 和 Shift+Tab
- 知道哪些元素可以制表
- 了解 Tab 键顺序的工作原理
1。监听 Tab 和 Shift+Tab
监听 Tab 和 Shift+Tab 可能在网络上的其他地方有很好的介绍,所以我将跳过那部分。
2。知道哪些元素是可以制表的
要知道哪些元素可以使用 Tab 键是比较棘手的。基本上,如果一个元素是可聚焦的并且没有设置 tabindex="-1"
属性,则该元素是可制表的。那么我们必须问哪些元素是可聚焦的。以下元素是可聚焦的:
input
、select
、textarea
、button
和object
元素没有被禁用。a
和area
元素具有href
或具有tabindex
设置的数值。<- 为
tabindex
设置了数值的任何元素。
此外,只有在以下情况下,元素才是可聚焦的:
- 它的祖先都不是
display: none
。 visibility
的计算值是visible
。这意味着要设置visibility
的最近祖先的值必须为visible
。如果没有祖先设置visibility
,则计算值是visible
。
更多细节在另一个Stack Overflow answer .
3。了解 Tab 键顺序的工作原理
文档中元素的跳格顺序由 tabindex
属性控制。如果未设置任何值,则 tabindex
实际上是 0
。
文档的 tabindex
顺序是:1, 2, 3, …, 0。
最初,当 body
元素(或没有元素)获得焦点时,tab 顺序中的第一个元素是最低的非零 tabindex
。如果多个元素具有相同的 tabindex
,则按文档顺序进行,直到到达具有该 tabindex
的最后一个元素。然后你移动到下一个最低的 tabindex
并且这个过程继续。最后,以零(或空)tabindex
结束这些元素。
关于javascript - 聚焦选项卡索引中的下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208161/