2012-11-05 68 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