2008-10-09 71 views
3

爲什麼這項工作:爲什麼JQuery keydown適用於窗口而不是文本框?

$(window).keydown(function(event){ 
    alert(event.keyCode); 
}); 

但不是這樣的:

$('#ajaxSearchText').keydown(function(event){ 
    alert(event.keyCode); 
}); 

我用Firefox 3測試 有趣的是,他們都沒有在IE7中工作。

+0

建議:提供最小的自包含示例來說明您的問題。 – Shog9 2008-10-09 15:24:27

回答

7

在Chrome,IE7和Firefox 3.0.3中檢查了此項。按原樣工作。 jQuery版本1.2.6。

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.2.6.js"></script> 
    <script type="text/javascript"> 
     $(function() 
     { 
     $("#ajaxSearchText").keydown(function(event) 
     { 
      alert(event.keyCode); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <input type="text" id="ajaxSearchText"></input> 
    </body> 
</html> 
1

嘗試使用

$('#ajaxSearchText').keyup(function(event){ 
    alert(event.keyCode); 
}); 

作品對我來說非常完美。同時檢查textarea的編號

3

對於您所有的keydown /鍵盤/鍵盤需求,請使用jQuery hotkeys插件。

幾個月前看到這一點,它永遠不會失敗打動它。按照跳轉插件演示... http://code.google.com/p/js-hotkeys/

它將包括連擊在內的所有鍵映射到鍵盤上。希望能幫助到你!

+0

我會添加評論來幫助任何人像我一樣絆倒這個人。 這個插件在jQuery 1.4.2及更高版本上的版本在這裏:http://github.com/jeresig/jquery。熱鍵/ – taxilian 2010-05-20 22:17:20

+0

jQuery已經擁有了回答這個問題所需的一切,一個插件不會真的有所幫助。 – ars265 2012-10-08 16:11:19

4

要解決在IE6和IE7的問題,試試這個...

$(function() 
{ 
    $(document).keydown(function(event){ 
     alert(event.keyCode); 
    }); 
}); 

附加事件到$(document)似乎這裏是神奇的東西。

雖然你的第一個代碼真的應該在IE中工作。這似乎是一個在jQuery中的錯誤,希望很快會被修復...

這裏是jQuery的錯誤報告的鏈接。 https://bugs.jquery.com/ticket/3614

0
$('#searchInput').keydown(function() { 
    alert('testing'); 
}); 

將不起作用。但是,如果你把它包裝在一個函數中:

$(function() 
{ 
    $('#searchInput').keydown(function() { 
     alert('testing'); 
    }); 
}); 

它會工作。

沒有該函數聲明,它只能用於文檔和窗口等對象。

相關問題