1

我的目标是在使用 jQuery 加载页面后聚焦输入字段。所以我在这个例子中尝试过:

HTML:

<form>
   <input type="text" tabindex="1"><br>
   <input type="text" tabindex="2"><br>
   <input type="text" tabindex="3"><br>
   <input type="text" tabindex="4"><br>
</form>

JavaScript:

$(function () {
    $("*[tabindex='3']").focus();
});

但这不起作用(在 FireFox 24.0 中测试),尽管在 StackOverflow 上的其他几个问题中建议使用这种方式。

随意尝试这个LIVE DEMO(有时您需要在第一个页面加载后单击运行)。

编辑:

将示例更改为关注第三个元素,因为默认情况下关注第一个元素。所以请尊重,如果您的解决方案适用于第一个元素,它可能不适用于另一个元素!

示例不适用于 FF 24.0/Win 7 和 IE 10/Win 7

编辑2:

正如 ghusse 指出的那样,该示例在小提琴上下文之外起作用:DEMO 所以问题是;什么会导致 .focus() 函数不起作用?

4

3 回答 3

3

这应该对你有用:

setTimeout(function(){
    $("*[tabindex='3']").focus();
},  1);

以最小的延迟使用 setTimeout。

于 2013-10-10T10:45:39.547 回答
1

我认为问题更多来自 jsfiddle 本身,而不是来自您的代码。

在 jsfiddle 中显示您的示例时,焦点设置为 javascript 代码窗口。

如果您在jsfiddle 全屏模式下显示您的代码结果,您会发现它实际上是有效的。

$(function () {
  $("*[tabindex='3']").focus();
});
于 2013-10-10T11:04:39.167 回答
0

您的代码似乎正确,也许小提琴有问题:

您的演示链接对我也不起作用,但“显示页面”很好:http: //jsfiddle.net/jHWDE/26/show/

另外,我更喜欢添加“输入”而不是 * 以进行优化(这样只会检查输入元素而不是每个元素):

$("input[tabindex=3]").focus();
于 2013-10-10T11:01:45.240 回答