2013-10-10 65 views
1

我的目标是在使用jQuery加载页面之后将焦点放在输入字段上。所以我在这个例子中尝试这样的:jQuery .focus()不起作用

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()函数无法工作?

+0

它适用于我:无论是在Chrome和Firefox(最新版本)。 –

+0

@Johnツ不适合我.. WIN7/FF24 –

+0

@ArunPJohny Interesintg,我在Ubuntu上... –

回答

3

这应该对你有帮助:

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

使用的setTimeout用最小的延迟。

+1

不是,同样的问题存在:( – Harry

+0

请问你可以做一个JS小提琴的例子吗? – tmuecksch

0

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

您的演示链接不为我工作,要么,但“显示页面”是好的:http://jsfiddle.net/jHWDE/26/show/

另外,我想宁添“输入”,而不是*的优化(这样,只有输入元素将被检查,而不是每一个):

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

我认为问题来自于自身的jsfiddle比你的代码更。

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

如果要显示在jsfiddle full screen mode你的代码的结果,你会发现,其实,它的工作原理

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

感谢您的建议 –

+0

感谢您的建议。您是对的。现在的问题是什么导致.focus()不再工作,因为这问题出现在我的项目的另一个环境中 – tmuecksch

+0

我们需要了解更多有关您的项目的信息,因为很显然,它可以开箱即用,您的代码中可能还有其他内容会干扰焦点。 – ghusse

相关问题