focus()不起作用

xjx*_*424 2 javascript jquery

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

这是输入

<input type="text" name="SearchBox" id="SearchBox" class="SearchBox" />
Run Code Online (Sandbox Code Playgroud)

这是jquery

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

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

Dan*_*umb 6

在文档就绪处理程序完成之前,搜索框将无法获得焦点.

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

setTimeout以超时为零的呼叫就像是说"一旦这个功能完成,这就是我想要你做的事情."

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

一个例子