我正在将一些热键构建到我的HTML页面中:
$(document).bind('keypress', function (e) {
var event = (e.keyCode ? e.keyCode : e.which);
if (event == LETTER_P) {
// go to another page
}
}
但问题是,如果他们在页面上输入文本(在文本框元素中等)并点击字母“P”,则他们将转到另一页。我只希望重定向发生,如果它们不在任何元素中。
答案 0 :(得分:4)
document.activeElement
。如果没有元素处于焦点,那么activeElement
将返回文档正文,因此:
if (document.activeElement === document.body) {
// Nothing is in focus
}
答案 1 :(得分:2)
您可以尝试这样的事情:
$(document).bind('keypress', function (e) {
var event = (e.keyCode ? e.keyCode : e.which);
if (event == LETTER_P && document.activeElement.tagName == "input") {
// go to another page
}
}
我对您的代码的补充并不需要任何库。
答案 2 :(得分:1)
您可以在jQuery中使用:focus
选择器。
if ( $( "input:focus, textarea:focus" ).length ) {
// there is a focused element
}
答案 3 :(得分:1)
if ( $('input:focus, select:focus').length){
// there is a focused element which would respond to a keypress
}