jQuery:在一个输入文本字段之外的所有文档上激活keyup

时间:2013-12-09 14:39:10

标签: javascript jquery input keyup jquery-1.9

我有一个

$(document).keyup(function(e) {
  //some code is here
});

代码,按预期工作:当我按下键盘上的任意键时它会触发。 我希望它能够触发,但是当光标位于

时不能触发
<input type="text" id="excludeMeFromFiring">

位于页面上。

如何在输入带有特殊ID的输入文本字段中修改上面的代码以排除触发?因此,如果光标位于输入文本字段中,则不会触发。

谢谢。

3 个答案:

答案 0 :(得分:5)

keyup函数中很容易做到:

$(document).keyup(function(e) {
    if ($(e.target).closest("#excludeMeFromFiring")[0]) {
        return;
    }

    // It's not that element, handle it
});

这是一般情况;由于input元素中不能包含任何元素,因此您只能使用e.target.id而不是closest

$(document).keyup(function(e) {
    if (e.target.id === "excludeMeFromFiring") {
        return;
    }

    // It's not that element, handle it
});

只要元素中包含其他元素,我就会使用closest

答案 1 :(得分:3)

尝试

$(document).keyup(function (e) {
    if(e.target.id === 'excludeMeFromFiring'){
        console.log('no');
    }else{
        console.log('hi');
    }
});

$(document).keyup(function (e) {
    if(e.target.id !== 'excludeMeFromFiring'){
       console.log('hi');
    }
});

答案 2 :(得分:3)

另一个例子:

$('#excludeMeFromFiring').keyup(function(e) {
    e.stopPropagation();
});