focus()不起作用

时间:2012-07-05 18:29:15

标签: javascript jquery

我在这里不知所措,以前从未遇到过这方面的问题 我无法在任何浏览器中使用focus()。我正在使用jquery,甚至无法使用标准的javascript。我尝试添加超时但仍然没有。我收到警报的所有内容都是“未定义”。

这是输入

<input type="text" name="SearchBox" id="SearchBox" class="SearchBox" />

这里是jquery

$(document).ready(function(){
    setTimeout(function(){
        $("#SearchBox").focus();
    }, 0);
    alert($("*:focus").attr("id"));
});

我已经将页面剥离到上面,以防有什么东西干扰它但仍然没有成功。它必须是我想念的简单!!!!

2 个答案:

答案 0 :(得分:7)

在文档就绪处理程序完成之前,搜索框不会获得焦点。

当您调用setTimeout时,即使超时设置为零,JavaScript也不会处理该超时,直到当前函数完成。这是因为JS是单线程的。

调用setTimeout超时为零就像是说“这是我希望你做的事情,一旦这个功能完成了。”

因此,在调用alert之后,搜索框才会获得焦点。

An example

答案 1 :(得分:0)

试试这个..

$(document).ready(function(){
    setTimeout(function(){
        $('#SearchBox').focus();
    },0);
    $(":input").focus(function(){
        alert($(this).attr("id"));
    });
});