2011-10-18 31 views
10

我試圖將焦點設置爲一個按鈕,而用戶按下在文本框中輸入鍵。但它不起作用。我正在使用互聯網  Explorer   8瀏覽器。我錯過了什麼嗎?設置焦點在一個按鈕不起作用

$("input.Box").live('keydown', function(e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     $("#button").focus(); // Not working? 
    } 
}); 

回答

6

微軟決定他們不喜歡e.keyCode,而是有自己的語法,e.which

你必須同時檢查:

$("input.Box").live('keydown', function(e) { 
    var keyCode = (window.event) ? e.which : e.keyCode; 

    if (keyCode == 13) 
     e.preventDefault(); 
     $("#button").focus(); // Not working? 
    } 
}); 
+0

對我來說e.keyCode == 13似乎工作正常.. – Lamps

1

確定名稱是否正確? .NET有重命名事物的習慣。您不指定語言或環境。

嘗試使用類選擇器。給該按鈕一個類名稱class="Test",然後使用$(".Text").focus()進行選擇。

+0

是的,名稱是正確的。 – Lamps

9

的問題是,IE不能夠所以你需要補充的是進入live功能時之間的小延遲足夠快地作出反應,而當.focus()叫做。因此,使用e.whiche.keyCode如攪拌器建議應解決您的問題與

setTimeout(function() { 
$('#button').focus(); 
}, 100); 

這種替代

$("#button").focus();

,結合。

+0

對我來說e.keyCode == 13似乎工作正常。 – Lamps

-1

在嘗試設置焦點之前,確保DOM已準備好,元素已存在。

+1

他不試圖將按鈕集中在文檔加載上。 –