0

キーが押されたときにリダイレクトするための次のコードがあります。

$('body').bind('keyup', function(event) {
    if(event.keyCode==66){ window.location = "page.php"; }
    });

わかりましたが、ユーザーがページにフォーカスのある入力フィールドを持っている場合、どうすれば適用できないようにすることができますか?

4

4 に答える 4

0

event.targetあなたはそれがどんな種類の要素であるかをテストして見ることができます。の場合はinput、何もせずに戻ります。具体的には、

if (-1 != ['INPUT', 'TEXTAREA'].indexOf(event.target.nodeName)) return;

編集:うーん、あなたたちは確かevent.currentTargetですか?currentTargetの代わりに何人かの人が言及しているのを見ますが、リスナーがバインドされている要素であるとは限りtargetませんか?event.currentTargetbody

于 2013-01-30T02:25:57.830 に答える
0

これを試してみてください。

if ( $("*:focus").is("textarea, input") ) return;
于 2013-01-30T02:27:01.037 に答える
0
$('input').bind('keyup', function(event) {
   if(event.keyCode==66 && !($(event.currentTarget).attr('id') ==='inputElement')){ window.location = "page.php"; }
});

また

$('input').bind('keyup', function(event) {
   if(event.keyCode==66 && !($(event.currentTarget).is(":focus"))){ window.location = "page.php"; }
});
于 2013-01-30T02:28:47.417 に答える
0

jQueryの:focusセレクターを使用できます。

$("input").is(":focus")

ここでの例:http://jsfiddle.net/n1ck/CegR7/2/

$('body').bind('keyup', function (event) {
    // If 'b' is pressed & no input is focused
    if (event.keyCode == 66 && !$("input").is(":focus")) {
        alert('Redirecting');
    }
});
于 2013-01-30T02:36:07.397 に答える