【问题标题】:How to put focus on a textbox?如何将焦点放在文本框上?
【发布时间】:2012-11-05 03:37:38
【问题描述】:

如何使用 JavaScript(或 jQuery)将焦点放在文本框上?

我在页面上有一个文本框,用户按下回车键后,文本框失去焦点。 (切记没有发帖,页面不会刷新)

我希望能够通过 javascript 将焦点设置回文本框内,以便用户可以继续输入而无需单击任何内容。

我尝试在用户按下回车键后添加以下代码:

$(".focus").focus();

我的文本框的代码:

<input type="text" class="focus" />

但是很遗憾,光标没有出现在文本框内,用户仍然需要点击才能继续输入。

我该如何解决这个问题?

【问题讨论】:

  • 用户按回车后你究竟是如何添加focus()代码的?
  • 我已经更新了我的答案,希望对您有所帮助。

标签: javascript jquery html textbox focus


【解决方案1】:

您必须将focus 代码应用到input,如果页面尚未加载或代码运行时DOM 尚未准备好,那么input 还没有focus在..

所以你必须检查 DOM 是否已加载,如下所示:

$(function(){
    $(".focus").focus();
});

http://jsfiddle.net/c7aUS/

您还可以在页面底部的 &lt;/body&gt; 标记之前包含代码,以便在您的所有 HTML 之后立即加载。

注意:如果您在 jsfiddle 中运行它,默认情况下您的代码在页面加载时运行。使用 JQuery 时,它会自动将其包装在此代码中:

$(window).load(function(){
     //your code here
});

编辑:

在这种情况下,meetamit 很有帮助,我想你正在寻找这个:

$(function(){
    $(".focus").focus();
    $(".focus").on('keydown', function(event) {
        if(event.which == 13) {// Enter key pressed
            $this = $(this);
            $this.focus();
            var value = $this.val();
            $this.val(''); /* clear the field */
            // do stuff with the value
        }
    });
});​

http://jsfiddle.net/c7aUS/1/

【讨论】:

    【解决方案2】:

    为什么按回车键会从字段中移走焦点? (我无法重现它。)这可能表明仍然存在隐藏的问题。也许不吧。如果没有,这可能会有所帮助:

    $(".focus").on('keydown', function(event) {
        if(event.which == 13) {// Enter key pressed
            event.preventDefault();
        }
    });
    

    【讨论】:

    • 这是 a 解决方案,虽然不是很优雅的 IMO。以后可能需要回车键来做其他事情。 preventDefault() 在必要时使用 enter 键应该是绝对的最后手段。也许甚至没有。
    • @Abhilash 这只会阻止指定字段中的默认值,其他任何地方都按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多