2008-10-09 64 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'); 
    }); 
}); 

它会工作。

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

相关问题