主体的按键监听器

keydown listener for body

本文关键字:监听器 主体      更新时间:2023-09-26

当按下页面上的空格键时,我想调用一个函数。唯一的问题是,认为该函数不能被调用,如果它集中在一个输入栏。有什么办法吗?

这段代码可以工作,但是当聚焦在输入栏

时仍然会触发函数
$(document).keydown(function(e){
    if (e.keyCode==32) {
     stopplay();
    }
});

更新到此:

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

:input是方便的,如果你有其他的输入元素,如select, textarea etc,它选择所有的输入元素。

Demo

使用 event.stopPropagation() 方法,防止按键冒泡

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

更新:

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

你可以看看事件的起源:

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

使用此代码

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