$ .focus()不起作用

jQuery focus()文档的最后一个例子说明

 $('#id').focus() 

应该使input焦点(主动)。 我似乎无法得到这个工作。

即使在这个网站的控制台,我正在尝试search框

 $('input[name="q"]').focus() 

我什么也没得到 有任何想法吗?

实际上,只要你没有专注于控制台,你关注这个网站的例子工作得很好。 不工作的原因很简单,因为它不是从开发控制台窃取焦点。 如果您在控制台中运行以下代码,然后在浏览器窗口中快速点击之后,您将看到它将重点放在search框上:

 setTimeout(function() { $('input[name="q"]').focus() }, 3000); 

至于你的另一个,过去给我带来麻烦的一件事是事件的顺序。 您不能在未连接到DOM的元素上调用focus()。 你想要关注的元素是否已经连接到DOM?

在网上find了解决办法

 $('#id').focus(); 

不工作。

 $('#id').get(0).focus(); 

做了工作。

这里的一些答案build议使用setTimeout来延迟关注目标元素的过程。 其中一人提到目标是在modal dialog内。 我不能进一步评论setTimeout解决scheme的正确性,而不知道它使用的具体细节。 不过,我想我应该在这里提供一个答案,以帮助像我一样碰到这个线程的人

事情的一个简单的事实是, 你不能专注于一个不可见的元素 。 如果遇到这个问题, 确保目标实际上是可见的。 在我自己的情况下,我正在沿着这些路线做一些事情

 $('#elementid').animate({left:0,duration:'slow'}); $('#elementid').focus(); 

这没有奏效。 我只是意识到当我执行$('#elementid')。focus()`从控制台执行了什么工作。 不同之处 – 在我的代码之上的目标没有确定的目标将事实上是可见的,因为animation可能不完整 。 这就是线索

 $('#elementid').animate({left:0,duration:'slow',complete:focusFunction}); function focusFunction(){$('#elementid').focus();} 

按预期工作。 我最初也是在setTimeout解决scheme,它也起作用。 然而,根据主机设备确保目标元素是否可见的过程有多慢,任意select的超时必定迟早会破坏解决scheme。

我意识到这是旧的,但今天遇到它。 没有答案为我工作,我发现工作是setTimeout。 我希望我的重点放在模态的input字段,使用setTimeout工作。 希望这可以帮助!

如果你使用bootstrap +模式,这对我工作:

  $(myModal).modal('toggle'); $(myModal).on('shown.bs.modal', function() { $('#modalSearchBox').focus() }); 

我也有这个问题。 在我的情况下工作的解决scheme是使用HTML元素的tabindex属性。

我对列表中的某些li元素使用了ng-repeat ,并且我无法使用.focus()将焦点集中到第一个li,所以我只是在循环中将tabindex属性添加到每个li中。

所以现在<li ng-repeat="user in users track by $index" tabindex="{{$index+1}}"></li>

+1是索引从0开始。在调用.focus()函数之前,请确保该元素存在于DOM中

我希望这有帮助。

额外的解决scheme有同样的问题,焦点()似乎没有工作,但最终结果是需要的是滚动到正确的位置:

以防其他人绊倒这个问题,并有同样的情况 – 我试图设置焦点后点击另一个元素,但重点似乎没有工作。 原来我只是需要一个e.preventDefault(); – 这是一个例子:

 $('#recipients ul li').mousedown(function(e) { // add recipient to list ... // focus back onto the input $('#message_recipient_input').focus(); // prevent the focus from leaving e.preventDefault(); }); 

这有助于:

如果您从mousedown事件处理函数中调用HTMLElement.focus(),则必须调用event.preventDefault()以防止焦点离开HTMLElement。 来源: https : //developer.mozilla.org/en/docs/Web/API/HTMLElement/focus