Javascript 无法将焦点从下拉列表更改为文本字段

Javascript 无法将焦点从下拉列表更改为文本字段,javascript,Javascript,我正在创建一个应用程序,在这个应用程序中,我试图做一些与他们通常打算做的稍有不同的事情 该程序将在非常受控的环境中运行,并具有特定的用途。对于程序的这一部分,它是一个具有文本输入字段和单个下拉列表的表单 现在,当在文本输入字段上按enter键时,焦点将切换到下拉列表,用户将使用箭头键选择一个选项,然后再次按enter键,从而提交表单,并应重新启动表单 HTML: 问题是,重新关注文本输入字段不起作用。看起来焦点将切换半秒左右,但随后焦点将返回到下拉框 如何将焦点切换回文本输入字段,并将其保持在该

我正在创建一个应用程序,在这个应用程序中,我试图做一些与他们通常打算做的稍有不同的事情

该程序将在非常受控的环境中运行,并具有特定的用途。对于程序的这一部分,它是一个具有文本输入字段和单个下拉列表的表单

现在,当在文本输入字段上按enter键时,焦点将切换到下拉列表,用户将使用箭头键选择一个选项,然后再次按enter键,从而提交表单,并应重新启动表单

HTML:

问题是,重新关注文本输入字段不起作用。看起来焦点将切换半秒左右,但随后焦点将返回到下拉框

如何将焦点切换回文本输入字段,并将其保持在该字段,直到再次按下enter键


-编辑:

,因为一旦焦点回到输入上,如果只使用“向下键”(key down),则“向上键”(key up)事件将触发,它将起作用

这样想吧

按键输入>焦点下拉列表>按键向上>按键向下输入>焦点输入>按键向上>焦点下拉列表

常量问题=$问题; const id=$id; 常数onEnter=e,fn=>{ 如果e.keyCode==13{ fn; } }; id.on'keydown',e=>onEntere,=>problem.focus; problem.changee=>id.val.focus; 在'keydown'上,e=>onEntere,=>id.val.focus; 身份证件 问题 1. 2. 3. 4.
和蔼可亲。我想这就是为什么它会聚焦一秒钟然后切换的原因。对于你的代码,我必须在下拉列表中按enter键2次,有没有办法使它只需执行一次?确定你必须按两次我不明白?嗯,我确定。它在代码片段中以及在我的应用程序中都能做到这一点。我认为这是因为当焦点更改为下拉菜单时,它会自动打开下拉菜单的选项,因此我必须按一次以接受该选项,然后再按一次以实际注册按键事件。我看到的另一个问题是,用户单击其中一个下拉选项也不会激活keydown事件:/I通过将其更改为onchange事件解决了上述两个问题。非常感谢。我很快就会接受你的回答。我可以在有时间的时候更改它以满足这些要求
<div class="card-body">

    <div class="form-group row">
        <label class="col-sm-2 col-form-label">id</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="id" autofocus>
        </div>
    </div>

    <div class="form-group row">
        <label class="col-sm-2 col-form-label">Problem</label>
        <div class="col-sm-10">
            <select id="problem" class="form-control">
                <option value="none">None</option>
            </select>
        </div>
    </div>

</div>
$("#id").on('keyup', function (e) {
    if (e.keyCode == 13) {
        $('#problem').focus();
    }
});

$("#problem").on('keydown', function (e) {
    if (e.keyCode == 13) {
        $('#id').val('').focus();
    }
});