2

我在这里不知所措,以前从来没有遇到过这个问题。
我无法让 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"));
});

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

4

2 回答 2

6

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

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

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

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

一个例子

于 2012-07-05T18:31:57.183 回答
0

尝试这个..

$(document).ready(function(){
    setTimeout(function(){
        $('#SearchBox').focus();
    },0);
    $(":input").focus(function(){
        alert($(this).attr("id"));
    });
});
于 2012-07-05T18:46:16.220 回答