我的目标是在使用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()函数不起作用?
答案 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();