【问题标题】:keydown listener for body正文的 keydown 侦听器
【发布时间】:2014-08-21 21:36:38
【问题描述】:

所以我想在页面上按下空格键时调用一个函数。唯一的问题是如果函数聚焦在输入栏中,则无法调用该函数。关于如何做到这一点的任何想法?

此代码有效,但在输入栏中聚焦时仍会触发该函数

$(document).keydown(function(e){
    if (e.keyCode==32) {
     stopplay();
    }
});

【问题讨论】:

  • 什么是“输入栏”?是浏览器的地址栏吗?
  • 您的代码正在运行,请检查此小提琴jsfiddle.net/d3cv5

标签: javascript jquery


【解决方案1】:

更新到这个:

if (e.keyCode==32 && !$(e.target).is(':input')) {
 stopplay();
}

:input 很方便,如果您有其他输入元素,例如 select, textarea etc,它会选择所有输入元素。

【讨论】:

    【解决方案2】:

    Demo

    使用event.stopPropagation()方法,防止keydown冒泡。

    $(':input').keydown(function(e){
        e.stopPropagation();
    });
    

    更新:

    如果您必须将上述内容应用于其他输入元素,请使用$(':input') 选择器。

    【讨论】:

    • 我以为你没有完全阅读这个问题。我看了看小提琴并删除了反对票。
    【解决方案3】:

    你可以看看事件的起源:

    $(document).keydown(function(e){
        if(!$(e.target).is("input")) {
            // it's NOT from an input!
        }
    });
    

    【讨论】:

      【解决方案4】:

      使用此代码

      $(document).keydown(function(e){
          if (e.keyCode==32 && !$(e.target).is("input")) {
           stopplay();
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-18
        • 1970-01-01
        • 2019-07-05
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多