Javascript 将tabindex设置为“最后一个元素”和“倒数第二个元素”-可能吗?
在对该问题的公认答案中,提出了以下意见: 请在不更改选项卡顺序的情况下执行此操作,以便 点击tab按钮将在按钮出现时循环显示 在屏幕上 我的问题是:有没有一种方法可以在这两个按钮上设置tabindex来完成这种排序,而不必为页面上的每个其他tabindex元素指定特定的tabindex 我对tabindex值的理解是,指定的正值在没有指定值的情况下处理元素,因此我无法找到一种方法来完成这项工作,而没有对所有其他元素赋值 如果事实上,为每个项目指定一个特定的tabindex是唯一的方法,那么是否有一些希望很短并且希望jQuery神奇的方法来为页面上的每个适当元素指定一个tabindex,比如1 编辑 看起来解决方案将涉及将特定的tabindex应用于每个其他可选项卡对象——看起来解决方案的一个重要部分是:jQuery中是否有一种方便的方法来选择每个可选项卡对象?所有s和???使用和固定按钮索引:Javascript 将tabindex设置为“最后一个元素”和“倒数第二个元素”-可能吗?,javascript,jquery,html,tabindex,Javascript,Jquery,Html,Tabindex,在对该问题的公认答案中,提出了以下意见: 请在不更改选项卡顺序的情况下执行此操作,以便 点击tab按钮将在按钮出现时循环显示 在屏幕上 我的问题是:有没有一种方法可以在这两个按钮上设置tabindex来完成这种排序,而不必为页面上的每个其他tabindex元素指定特定的tabindex 我对tabindex值的理解是,指定的正值在没有指定值的情况下处理元素,因此我无法找到一种方法来完成这项工作,而没有对所有其他元素赋值 如果事实上,为每个项目指定一个特定的tabindex是唯一的方法,那么是否有
$(":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:
根据规范: 分配给tabindex的正值根据元素的tabindex值对元素进行排序 负值使元素不可聚焦 值0使元素可聚焦,但其顺序取决于平台 因此,如果您想在页面中有一个特定的顺序,您必须为每个元素分配一个值 但是jquery来了: 假设应该按顺序排列的元素位于id=myDiv的div中 然后,您可以执行以下操作:
$("#myDiv").find("*").prop("tabindex", 1);
这将使myDiv的每个子/子子子元素的tabindex为1。
然后您的两个按钮可以分配一个css类,例如:class=highTabIndex
然后可以再次调用jquery:
var idx = 2;
$("#myDiv").find(".highTabIndex").each(function(idx, element) {
element.prop("tabindex", idx++);
});
您的HighTabIndex类按钮将根据页面中的位置进行排序。您查看了吗?这很接近,但仅将tabindex值应用于输入。这里的答案列出了可以有tabindex的所有可聚焦元素。由于我不想干扰页面现有的选项卡顺序,我认为答案是迭代页面上所有可用的元素,找到使用中的最大选项卡索引,然后使用该值+1和+2…修复了使用answer you中的选择器的plunkreferred@JohnHascall默认情况下,每个元素的tabindex为0,如果页面包含默认值为0的元素,则很有可能。然后,如果你把这些按钮放在底部,然后给出正的tabindex,那么它们就会成为taborder中的前两个元素——这肯定是错误的。所以,唯一的解决方案似乎是遍历页面,用tabindex 0保存所有元素的列表,并找到最高的tabidex,H,然后遍历零值tabindex列表,给每个元素一个值H+1,H+2。。。以具有最高索引的两个按钮结束。
$("#myDiv").find("*").prop("tabindex", 1);
var idx = 2;
$("#myDiv").find(".highTabIndex").each(function(idx, element) {
element.prop("tabindex", idx++);
});