Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将tabindex设置为“最后一个元素”和“倒数第二个元素”-可能吗?_Javascript_Jquery_Html_Tabindex - Fatal编程技术网

Javascript 将tabindex设置为“最后一个元素”和“倒数第二个元素”-可能吗?

Javascript 将tabindex设置为“最后一个元素”和“倒数第二个元素”-可能吗?,javascript,jquery,html,tabindex,Javascript,Jquery,Html,Tabindex,在对该问题的公认答案中,提出了以下意见: 请在不更改选项卡顺序的情况下执行此操作,以便 点击tab按钮将在按钮出现时循环显示 在屏幕上 我的问题是:有没有一种方法可以在这两个按钮上设置tabindex来完成这种排序,而不必为页面上的每个其他tabindex元素指定特定的tabindex 我对tabindex值的理解是,指定的正值在没有指定值的情况下处理元素,因此我无法找到一种方法来完成这项工作,而没有对所有其他元素赋值 如果事实上,为每个项目指定一个特定的tabindex是唯一的方法,那么是否有

在对该问题的公认答案中,提出了以下意见:

请在不更改选项卡顺序的情况下执行此操作,以便 点击tab按钮将在按钮出现时循环显示 在屏幕上

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

我对tabindex值的理解是,指定的正值在没有指定值的情况下处理元素,因此我无法找到一种方法来完成这项工作,而没有对所有其他元素赋值

如果事实上,为每个项目指定一个特定的tabindex是唯一的方法,那么是否有一些希望很短并且希望jQuery神奇的方法来为页面上的每个适当元素指定一个tabindex,比如1

编辑 看起来解决方案将涉及将特定的tabindex应用于每个其他可选项卡对象——看起来解决方案的一个重要部分是:jQuery中是否有一种方便的方法来选择每个可选项卡对象?所有s和???

使用和固定按钮索引:

$(":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++);
});