2

HTMLのページにいくつかのホットキーを作成しています。

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

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

ただし、問題は、ページに(テキストボックス要素などで)テキストを入力して文字「P」を押すと、別のページに移動することです。それらがどの要素にも含まれていない場合にのみリダイレクトが発生するようにします。

4

4 に答える 4

4

document.activeElement最近のすべての主要なブラウザでサポートされています。フォーカスされている要素がない場合はactiveElement、ドキュメントの本文が返されるため、次のようになります。

if (document.activeElement === document.body) {
    // Nothing is in focus
}
于 2012-06-05T22:47:49.780 に答える
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
    }
}

あなたのコードへの私の追加は、ライブラリを必要としません。

于 2012-06-05T22:47:59.530 に答える
1
if ( $('input:focus, select:focus').length){
   // there is a focused element which would respond to a keypress
}
于 2012-06-05T22:49:12.533 に答える
1

:focusjQuery でセレクターを使用できます。

if ( $( "input:focus, textarea:focus" ).length ) {
   // there is a focused element
}
于 2012-06-05T22:45:29.177 に答える