2

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

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

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

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

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

我的文本框的代码:

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

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

我该如何解决这个问题?

4

2 回答 2

2

您必须将focus代码应用于input,如果页面尚未加载或DOM代码运行时尚未准备好,则还没有input打开focus..

因此,您必须检查 DOM 是否已加载,如下所示:

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

http://jsfiddle.net/c7aUS/

您还可以在页面底部的标记之前包含</body>代码,以便在您的所有 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/

于 2012-11-05T03:41:49.683 回答
1

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

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

​</p>

于 2012-11-05T03:50:06.770 回答