jQuery .focus()不起作用

时间:2013-10-10 10:37:19

标签: javascript jquery html internet-explorer firefox

我的目标是在使用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&amp; IE 10 / Win 7

编辑2:

正如ghusse所说,这个例子在小提琴背景之外起作用:DEMO 所以问题是;什么会导致.focus()函数不起作用?

3 个答案:

答案 0 :(得分:3)

这应该对你有用:

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

使用最小延迟的setTimeout。

答案 1 :(得分:1)

我认为问题来自于jsfiddle本身而不是来自你的代码。

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

如果您在jsfiddle full screen mode中显示代码结果,您会看到实际上可行

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

答案 2 :(得分:0)

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

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

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

$("input[tabindex=3]").focus();