身体的keydown听众

时间:2014-07-01 10:46:13

标签: javascript jquery

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

此代码有效,但在聚焦于输入栏时仍然会触发该功能

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

4 个答案:

答案 0 :(得分:2)

更新到:

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

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

答案 1 :(得分:1)

<强> Demo

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

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

更新

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

答案 2 :(得分:0)

那么你可以看看事件的起源:

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

答案 3 :(得分:0)

使用此代码

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