的last example of jQuery's focus()
documentation状态
$('#id').focus()
应使输入集中(活动)。我似乎无法得到这个工作。
即使在本网站上的控制台,我想它的搜索框
$('input[name="q"]').focus()
,我得到什么。有任何想法吗?
的last example of jQuery's focus()
documentation状态
$('#id').focus()
应使输入集中(活动)。我似乎无法得到这个工作。
即使在本网站上的控制台,我想它的搜索框
$('input[name="q"]').focus()
,我得到什么。有任何想法吗?
实际上,您专注于此网站的示例工作得很好,只要您不专注于控制台。不工作的原因仅仅是因为它不是从开发控制台窃取焦点。如果您在控制台中运行下面的代码,然后迅速点击后,浏览器窗口,你会看到它专注于搜索框:
setTimeout(function() { $('input[name="q"]').focus() }, 3000);
至于你另外一个,有一两件事给了我麻烦过去是事件的顺序。您不能在未连接到DOM的元素上调用focus()。您尝试关注的元素是否已附加到DOM?
就是这样。我发誓这不是一个时间问题(它是),但我疯了,因为它不是从控制台工作。我发誓我之前从控制台做过。谢谢! – 2013-04-07 05:24:15
太棒了!这有助于解决你的两个问题吗?如果是这样,你能把它标记为正确答案吗?我非常感激:D – 2013-04-07 05:35:47
- 当然是在时间限制之前。再次感谢。当只使用$('input [name =“q”]')时, – 2013-04-07 06:13:20
发现在网络上其他地方的解决方案......
$('#id').focus();
没有工作。
$('#id').get(0).focus();
确实有效。
我对此解决方案进行了升级,仅仅是因为它适用于本页更受欢迎的解决方案。 ;-) – chriv 2016-01-21 19:56:06
第二个选项似乎是抓住了DOM元素,并使用常规的JavaScript版本,而不是jQuery版本。 – danielson317 2016-02-26 22:49:29
这是最终为我工作的那个人!谢谢! – Hua 2016-07-13 17:00:46
我意识到这是旧的,但今天遇到它。没有答案为我工作,我发现工作的是setTimeout。我希望我的重点放在模态的输入字段上,使用setTimeout工作。希望这可以帮助!
这里的一些答案建议使用setTimeout
推迟关注目标元素的过程。其中一人提到目标是在模态对话框内。我不能进一步评论setTimeout
解决方案的正确性,而不知道其使用位置的具体细节。不过,我想我应该提供答案在这里,以帮助谁碰到这个线程,就像我一样
事情的简单的事实是,你不能集中是没有可见元素上的人。如果遇到这个问题确保目标实际上可见当试图集中它时。在我自己的情况下,我沿着这些路线做了一件事
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
这没有奏效。我只是意识到当我从控制台执行$('#elementid')。focus()`时,发生了什么事情,做了的工作。区别 - 在我的代码上方的目标不能确定目标将事实上可见,因为动画可能不是完成。并且存在线索
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
与预期一致地工作。我最初也在setTimeout
解决方案,它也工作。然而,随意选择的超时值必然迟早会破坏解决方案,这取决于主机设备在确保目标元素可见的情况下执行的速度有多慢。
我的相关提示是“确保目标实际上可见”。这在尝试专注于有条件渲染的元素时变得相关。 – 2017-11-04 04:25:41
附加解决方案必须同样的问题焦点()似乎这里没有工作,但最终事实证明,需要的是滚动到正确的位置:
,如果你使用bootstrap +模式,这对我工作:
$(myModal).modal('toggle');
$(myModal).on('shown.bs.modal', function() {
$('#modalSearchBox').focus()
});
这解决了我的问题。谢谢 – Quiver 2017-07-10 18:44:53
我也有这个问题。在我的情况下工作的解决方案是使用HTML元素的tabindex属性。
我对列表中的某些li元素使用了ng-repeat
,并且我无法使用.focus()将焦点集中到第一个li,所以我只是在循环过程中将tabindex属性添加到每个li中。
所以现在<li ng-repeat="user in users track by $index" tabindex="{{$index+1}}"></li>
这是+1指数从0开始 同时确保该元素存在于DOM调用.focus()函数
我希望这有助于之前。
为了防止其他人绊倒这个问题,并有同样的情况我 - 我试图设置焦点后点击另一个元素,但重点似乎并没有工作。原来我只是需要一个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
对于那些 “)$(元素).show(” 不工作,因为你使用的问题。我解决了它的下一个方法:
var textbox = $("#otherOption");
textbox.show("fast", function() {
textbox[0].focus();
});
所以你不需要一个计时器,完成表演方法后,它将执行。
你能告诉我们你的代码吗? – Adil 2013-04-07 05:13:46
我们必须知道更多,因为它适用于我:http://jsfiddle.net/G7hwR/1/只需单击右侧面板中的任意位置,然后将它聚焦... – 2013-04-07 05:17:25
不应该将重点放在此页面上工作,但?我提供的片段? – 2013-04-07 05:18:12