javascript – 将tabindex设置为“last element”和“倒数第二个元素” – 可能吗?

在对此问题Multiple submit buttons in an HTML form的接受回答中,提出了评论:

Please don’t do this without also changing the tab order, so that
hitting the tab button will cycle through the buttons as they appear
on screen.

我的问题是:有没有办法在这两个按钮上设置tabindex来完成这个排序,而不必为页面上的每个其他可选元素分配一个特定的tabindex?

我对tabindex值的理解是指定的正值继续使用没有指定值的元素,因此我无法找到一种方法来执行此操作,并将其他所有内容分配给值.

如果确实如此,为每个项目分配特定的tabindex是唯一的方法,是否有一些(希望简短且有希望的jQuery)魔术为页面上的每个适当的元素分配一个tabindex,比方说1?

编辑
因为看起来解决方案将涉及将特定的tabindex应用于每个其他可标记对象 – 似乎解决方案的一个重要部分将是:jQuery中有一种方便的方法来选择每个可列表对象吗?所有的s和???

解决方法:

使用Adding tabindex dynamically和修复按钮凹凸:

$(":input:not(:hidden)")
  .each(function (i) {
    $(this).attr('tabindex', i + 1);
  });
var r = $('input.r').attr('tabindex');
$('input.r').attr('tabindex', $('input.l').attr('tabindex'));
$('input.l').attr('tabindex', r);

HTML:

<input type="submit" value="Next" class="r" />
<input type="submit" value="Previous" class="l" />

Plunk

更新 – 修复查询以不仅选择输入(请参阅下面John的评论中的链接):

$("a[href],area[href],input:not([disabled]),select:not([disabled]),\
textarea:not([disabled]),button:not([disabled]),iframe,[tabindex],\
[contentEditable=true]")
上一篇:javascript-使用jQuery规避tabindex问题


下一篇:Javascript的tabIndex属性是跨浏览器吗?