为什么JQuery keydown适用于窗口但不适用于文本框?

为什么这样做:

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

但不是这个:

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

我正在使用Firefox 3进行测试。有趣的是,它们都不能在IE7中运行。

在Chrome,IE7和Firefox 3.0.3中查看过此内容。 按预期工作。 jQuery版本1.2.6。

          

要解决IE6和IE7中的问题,试试这个……

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

将事件附加到$(document)似乎是这里的神奇事物。

你的第一段代码确实应该在IE中工作。 它似乎归结为jQuery中的一个错误,希望很快得到修复……

这是jQuery中bug报告的链接。 https://bugs.jquery.com/ticket/3614

对于所有keydown / keyup / keyboard需求,请使用jQuery热键插件。

几个月前看到它,它永远不会给它留下深刻印象。 按照插件演示的跳转… http://code.google.com/p/js-hotkeys/

它映射键盘上的所有键,包括组合。 希望能帮助到你!

尝试使用

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

完美适合我。 还要检查textarea的id

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

不管用。 但是,如果将其包装在函数中:

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

它会工作。

没有该函数声明,它只适用于文档和窗口等对象。

因为’window’对象不支持键事件。

http://www.w3schools.com/jsref/obj_window.asp

但仅限于’文件’:

http://www.w3schools.com/jsref/dom_obj_event.asp

如果它曾经工作过那么它就是jQuery中的一个bug。