有没有办法在Javascript中确定是否没有元素聚焦?

时间:2012-06-05 22:38:47

标签: javascript

我正在将一些热键构建到我的HTML页面中:

   $(document).bind('keypress', function (e) {
        var event = (e.keyCode ? e.keyCode : e.which);

        if (event == LETTER_P) {
            // go to another page
        }
    }

但问题是,如果他们在页面上输入文本(在文本框元素中等)并点击字母“P”,则他们将转到另一页。我只希望重定向发生,如果它们不在任何元素中。

4 个答案:

答案 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
}