javascript - 无法将 .focus() 赋予下拉菜单的元素

标签 javascript jquery twitter-bootstrap drop-down-menu

这是一个 Boostrap 导航栏,包含一个 dropdown菜单,包含一个 <input> .

enter image description here

当我点击下拉菜单时,它显示成功。 <input> 的值成功改成Bonjour但是这个<input>没有得到焦点。为什么?

http://jsfiddle.net/rzsmdg4f/1/

如何使用 .focus() 将焦点放在下拉菜单中包含的输入上?


代码:

<div class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container">
        <ul class="nav navbar-nav">
            <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="maa">Dropdown<span class="caret"></span></a>
                <ul class="dropdown-menu" role="menu" style="min-width: 250px;">
                    <li>
                        <div style="padding:4px 20px;">Link:</div>
                    </li>
                    <li>
                        <div style="padding:4px 20px;">
                            <input class="form-control" id="ha" type="text" placeholder="blabla" />
                        </div>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</div>

JS:

{
    var maa = document.getElementById('maa');
    console.log(maa);
    maa.addEventListener('click', function () {
        console.log($('#ha'));
        $('#ha').val('Bonjour');
        $('#ha').focus();
    });
};

最佳答案

jsFiddle Demo

该元素在单击时存在,因此更改其值并记录它会正确显示该元素的当前状态。但是,它还没有显示出来,因此聚焦它并不会真正起到任何作用。您可能会重构库中的一些小片段以公开一个 Hook ,您可以使用它来让您的焦点发挥作用。或者,您可以观察到在紧接着的下一个事件处理程序中元素将可见并使用一个小的超时。

maa.addEventListener('click', function () {
    console.log($('#ha'));
    $('#ha').val('Bonjour');
    setTimeout(function(){$('#ha').focus();},10);//timeout here
});

关于javascript - 无法将 .focus() 赋予下拉菜单的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130051/

相关文章:

jquery - Bootstrap 轮播,自动循环然后停止

javascript - 在 Angular 6 的 do while 循环中延迟递归 HTTP get 请求

javascript - 为什么我不能在 Django Web 应用程序中使用客户端摄像头拍摄图像快照?

javascript - 如何告诉 Sonar 使用我的 surefire 报告作为单元测试结果

html - CSS:垂直居中响应式 Bootstrap 表单

javascript - 单击按钮更改事件的 Bootstrap 选项卡

javascript - 使用 jquery 编辑 iframe 内容

php - 在不使用 jquery/ajax 的情况下自动将新记录插入表中时,用新记录更新页面的另一种方法是什么

JqueryUi slider 在 iframe 中不起作用

javascript - 在 Node 快速执行 css 和 js 文件未加载