【问题标题】:jQuery Keydown event not working in ChromejQuery Keydown 事件在 Chrome 中不起作用
【发布时间】:2020-04-11 02:59:13
【问题描述】:

我正在使用以下 JQuery 代码来捕获 DIV 中的按键事件:

$("#pnlPreview").keydown(pnlPreview_onKeyDown);

我试图捕捉的特定按键组合如下:

  • SHIFT + 插入
  • SHIFT + 删除
  • CTRL + 插入
  • CTRL + 删除

虽然此代码在 IE 中运行良好,但在 Chrome 中却无法运行。我在 Windows 7 下使用最新的 Chrome 浏览器 (38.0.2125.104)。

谁能告诉我如何在谷歌浏览器中捕获这些按键组合?

请参阅此 jsfiddle:jsfiddle.net/fx7do2cf/7。这与我在项目中的内容最接近。在 IE 中检测到按键事件,但在 Chrome 中未检测到。

【问题讨论】:

  • 请向我们展示您的代码。
  • 似乎工作正常jsfiddle.net/1b4re4nm/1
  • 我验证了你的 jsfiddle Spokey。让我进一步调查,看看我的项目有什么不同。
  • Spokey,我稍微修改了你的 jsfiddle 以匹配我的情况。在这种情况下,我在 div id(不是文档)上设置 keydown 事件,然后将焦点设置到 div。见jsfiddle.net/yL67u5th
  • 我认为问题可能是chrome不会在不可编辑的元素或某些焦点问题上触发事件。设置 tabindex 似乎对jsfiddle.net/yL67u5th/1 有所帮助。在没有 tabindex 的情况下,焦点也不应该在 IE 中工作

标签: jquery google-chrome keydown


【解决方案1】:

真正的问题不是 Chrome 没有捕获 keydown 事件,而是如果没有 div 上的 tabIndex 属性,则无法在 Chrome 中将焦点设置为 div。虽然在 IE 中可以将焦点设置为没有 tabindex 属性的 div,但在 Chrome 中无法设置。

解决此问题的所有功劳都应归功于 Spokey。他在确定真正的问题并解决问题方面发挥了重要作用。

【讨论】:

    【解决方案2】:

    尝试将keydown事件设为

    $(document).on("keydown",'<selector>',function(event){
      alert("You clicked " + event.keyCode);
      // code
    })
    

    对于上述情况使用

    $(document).on("keydown",'#pnlPreview', pnlPreview_onKeyDown);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多