在 jQuery 中,如何在按键时触发操作,但前提是焦点不在表单字段上?

In jQuery, how do I trigger an action on a keypress but only if the focus is not on a form field?

我正在使用 jQuery 1.11。如果用户按下键盘上的“d”键,我想 运行 执行一个操作。所以我有这个

$(document).keypress(function(e) {
    if(e.which == 68 || e.which == 100) {
        submitDownloadUsersReq();
    }
});

但是,如果他们在文本框中按“d”键,我不希望触发上述操作。我如何修改上面的内容,以便在用户乱用表单字段时我不会触发操作?

您可以在用户从输入元素按下 d 时取消事件,

$(document).keypress(function(e) {
    if(!$(e.target).is("input")) {
      if(e.which == 68 || e.which == 100) {
        submitDownloadUsersReq();
      }
    }
});

您可以使用 e.targetis():

检查元素类型
$(document).keypress(function(e) {
    if (!$(e.target).is(':input') && (e.which == 68 || e.which == 100)) {
        submitDownloadUsersReq();
    }
});

请注意,:input 选择器将匹配 inputselecttextareabutton