首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么$('[tabindex="1"]').focus();专注于tabindex="2"?

为什么$('[tabindex="1"]').focus();专注于tabindex="2"?
EN

Stack Overflow用户
提问于 2014-11-23 19:25:33
回答 2查看 186关注 0票数 0

当提交按钮聚焦时,按下选项卡时,焦点应该返回到tabindex="1"。下面是HTML:

代码语言:javascript
复制
<input tabindex="1" id="tabindex1" value="tabindex='1'" autofocus>
<input tabindex="2" id="tabindex2" value="tabindex='2'">
<input tabindex="3" id="tabindex3" value="tabindex='3'">
<input tabindex="4" id="submit_button" type="submit">

下面是JQuery:

代码语言:javascript
复制
$("input").keydown(function (e) {
    if (e.which == 9 && $(":focus").attr("id") == "submit_button") {
        $('[tabindex="1"]').focus(); // Focuses on tabindex="2"!!!
        // $('#tabindex1').focus(); // Does the same thing
    }
});

这是小提琴。在我的生活中,我不知道为什么它将使用tabindex="2"而不是tabindex="1",甚至当我使用id属性而不是tabindex时,它也会这样做。我怎样才能去tabindex="1"

Update:下面来自索克汀普克霍布斯的解决方案成功了。这里有把小提琴显示它与return false;一起工作,这里有一个小提琴,显示它与e.preventDefault();一起工作。后续问题:这两种解决方案之一比另一种更可取吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 19:29:14

return false添加到if语句的末尾:

代码语言:javascript
复制
$("input").keydown(function (e) {
    if (e.which == 9 && $(":focus").attr("id") == "submit_button") {
        $('[tabindex="1"]').focus(); // Focuses on tabindex="2"!!!
        // $('#tabindex1').focus(); // Does the same thing
        return false;
    }
});
代码语言:javascript
复制
<input tabindex="1" id="tabindex1" value="tabindex='1'" autofocus>
<input tabindex="2" id="tabindex2" value="tabindex='2'">
<input tabindex="3" id="tabindex3" value="tabindex='3'">
<input tabindex="4" id="submit_button" type="submit">

问题是,它关注的是第一个输入,然后浏览器执行默认操作,即将重点放在下一个输入上。因此,最终,它关注的是第二个输入。

返回false确保浏览器不采取默认行为。

票数 4
EN

Stack Overflow用户

发布于 2014-11-23 19:28:36

您没有阻止默认操作,选项卡的默认操作是移动到下一个表索引。因此,您的回调使tabindex 1聚焦,然后选项卡键的默认行为聚焦到tabindex 2。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27093262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档