在 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.target
和 is()
:
检查元素类型
$(document).keypress(function(e) {
if (!$(e.target).is(':input') && (e.which == 68 || e.which == 100)) {
submitDownloadUsersReq();
}
});
请注意,:input
选择器将匹配 input
、select
、textarea
和 button
。
我正在使用 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.target
和 is()
:
$(document).keypress(function(e) {
if (!$(e.target).is(':input') && (e.which == 68 || e.which == 100)) {
submitDownloadUsersReq();
}
});
请注意,:input
选择器将匹配 input
、select
、textarea
和 button
。