2012-11-05 33 views
2

如何将焦点放在带有JavaScript(或jQuery)的文本框上?如何把重点放在文本框?

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

我希望能够通过JavaScript将焦点置回到文本框的内部,以便用户可以继续输入并且不必点击任何内容。

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

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

我的文本框代码:

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

但很可惜,光标不会出现内部文本框和用户仍然需要点击继续输入。

我该如何解决这个问题?

+2

您具体是如何添加对焦()代码后用户按下回车? –

+0

我已经更新了我的答案,希望它有帮助。 – JKirchartz

回答

2

你必须在focus代码适用于input,如果页面没有加载或代码运行时的DOM没有准备好,那么就没有input尚未focus上..

所以你要检查DOM被加载,这样的:

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

http://jsfiddle.net/c7aUS/

您还可以在页面底部的代码之前, </body>标记,以便它在所有HTML之后立即加载。

note:如果您在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/

1

为什么按下回车键会将焦点从现场取走? (我无法复制它)。这可能表明仍然存在隐藏的问题。也许不会。如果不是,这可能帮助:

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

+0

这是一个**解决方案,虽然不是很优雅的国际海事组织。输入密钥可能是以后需要的东西。 ''preventDefault()'必要的东西,因为'enter'键应该是绝对最后的手段。也许甚至没有。 – Abhilash

+0

@Abhilash这只能防止默认在指定的字段,其他地方按预期工作。 – JKirchartz