【问题标题】:Why does JQuery keydown work for window but not textbox?为什么 JQuery keydown 适用于窗口而不适用于文本框?
【发布时间】:2010-09-16 06:41:16
【问题描述】:

为什么会这样:

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

但不是这个:

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

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

【问题讨论】:

  • 建议:提供尽可能小的独立示例来说明您的问题。

标签: jquery


【解决方案1】:

在 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> 

【讨论】:

    【解决方案2】:

    要修复 IE6 和 IE7 中的问题,试试这个...

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

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

    您的第一段代码确实也应该在 IE 中工作。这似乎归结为 jQuery 中的一个错误,有望很快得到修复......

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

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我会添加评论以帮助像我一样偶然发现此问题的任何人。此插件适用于 jQuery 1.4.2 及更高版本的版本在这里:github.com/jeresig/jquery.hotkeys
    • jQuery 已经具备了回答这个问题所需的一切,插件并没有真正的帮助。
    • 抱歉,ars265,这完全是错误的。请告诉我们如何轻松使用原生 jQuery 来捕获 ctrl + alt + del。如果你使用 ascii/key 代码你已经丢失了......
    【解决方案4】:

    尝试使用

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

    非常适合我。还要检查 textarea 的 id

    【讨论】:

      【解决方案5】:
      $('#searchInput').keydown(function() {
          alert('testing');
      });
      

      不会工作。但是,如果将其包装在一个函数中:

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

      它会起作用的。

      没有那个函数声明,它只适用于像文档和窗口这样的对象。

      【讨论】:

        【解决方案6】:

        因为“窗口”对象不支持键事件。

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

        但仅在“文档”上:

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

        如果它曾经有效,那么它是 jQuery 中的一个错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多