我在这里很茫然,以前从来没有遇到过问题。
我无法使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"));
});

我将页面简化为上述内容,以防某些干扰,但仍然没有成功。这一定是我想念的简单事情!!!!

最佳答案

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

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

超时为零的setTimeout调用就像是说“一旦此功能完成,我想做的就是这件事。”

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

An example

关于javascript - focus()将不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11350366/

10-16 08:10