2016-11-22 25 views
1

我正在使用jQuery 1.11。如果用户按下键盘上的“d”键,我想运行一个动作。所以我有这个在jQuery中,如何在按键上触发某个动作,但仅当焦点不在表单字段上时才触发动作?

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

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

回答

1

你可以使用e.targetis()检查元件的类型:

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

注意,:input选择将匹配input,select,textareabutton

+0

在这种情况下不会'this'指向文档吗?纠正我如果我错了。' –

+1

你是对的 - 错过了主选择器。谢谢 –

1

可以取消当用户从输入元件按压d的情况下,

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