jQuery在Bootstrap输入框上的focus()方法无效

5
我希望页面加载时搜索输入框自动获得焦点。因此,我尝试了以下方法:

我希望页面加载时搜索输入框自动获得焦点。因此,我尝试了以下方法:

(function () {
    $('#searchbox').focus();
})

然而,这样做什么也没发生。我认为它可能会与我拥有的一些其他代码冲突,所以我在Bootstrap示例页面上进行了简单的测试:http://twitter.github.com/bootstrap/examples/hero.html。在Chrome控制台中,我输入了$('input:first').focus();,它给我返回了<input class="span2" type="text" placeholder="Email">,但是它并没有将焦点放在电子邮件字段上。
当页面加载时,我简单地专注于某个输入字段错在哪里?

你无法从控制台中进行聚焦,因为它当前已经获得了焦点(想象一下在另一个选项卡处尝试聚焦 - 这是行不通的)。如果你执行 setTimeout(function(){$('input').eq(0).focus();}, 1000); 并且快速地再次点击以重新聚焦页面,它将会起作用。你能否发布一个有问题的页面链接或者设置一个 fiddle? - Snuffleupagus
$(function(){$('#searchbox').focus();}); - A. Wolff
2个回答

4

你的初始代码应该可以正常工作,但是你没有添加第二对括号来调用你的匿名函数。如果它在页面底部,那么相关部分的DOM将在此时准备就绪,使jQuery domready不必要。

;(function () { $('#searchbox').focus(); })();

应该可以正常工作


2
您可能需要等待页面加载完成。尝试使用以下内容:

您可能需要等待页面加载完成。尝试使用以下内容:

$(document).ready(function () {$('#searchbox').focus(); });

我认为如果我把JS放在底部,DOM就会准备好了。这样修复了问题。 - EsTeGe
@EsTeGe,你只需要在你的代码中添加'$'就可以让它工作了:$(function(){$('#searchbox').focus();}); - A. Wolff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接