试图将焦点设置在隐藏的文本框中

时间:2012-06-25 06:45:18

标签: jquery

我正在尝试将焦点设置在隐藏的文本框中。我希望当包含文本框的主体或div加载焦点时,应该在特定文本框上,以便键盘或任何其他设备的任何输入都被此元素捕获。我试过以下代码没有效果:

<body>
    <input type="text" id="exp" maxlength="16"></input>
    <input type="text" id="exp2" maxlength="16"></input>
    <script>
        $("#exp").hide();
        $("#exp").focus();
        $("#exp2").keypress(function(){
            alert($("#exp").val());
        });
    </script>
</body>

提出任何建议。 jquery解决方案将是首选。

3 个答案:

答案 0 :(得分:12)

您无法将焦点设置为通过hide方法隐藏的文本框。相反,您需要将其移出屏幕。

<body>
<!-- it's better to close inputs this way for the sake of older browsers -->
<input type="text" id="exp" maxlength="16" />
<input type="text" id="exp2" maxlength="16" />
<script>
// Move the text box off screen
$("#exp").css({
    position: 'absolute',
    top: '-100px'
});
$("#exp").focus();
$("#exp2").keypress(function(){
alert($("#exp").val());
});
</script>
</body>

答案 1 :(得分:1)

visibility:hidden; 
position: absolute;

适用于Chrome 53,看起来比在Nathan Wall的回答中将元素移出屏幕更清晰。

答案 2 :(得分:0)

这可以通过 async/await 实现,其中选择输入的代码仅在 显示输入的代码返回其履行的承诺之后运行。

let selectInput = async () => {
    await setInputDisplayBlock();
    document
        .getElementById("input")
        .focus();
};
selectInput();