キーが押されたときにリダイレクトするための次のコードがあります。
$('body').bind('keyup', function(event) {
if(event.keyCode==66){ window.location = "page.php"; }
});
わかりましたが、ユーザーがページにフォーカスのある入力フィールドを持っている場合、どうすれば適用できないようにすることができますか?
event.target
あなたはそれがどんな種類の要素であるかをテストして見ることができます。の場合はinput
、何もせずに戻ります。具体的には、
if (-1 != ['INPUT', 'TEXTAREA'].indexOf(event.target.nodeName)) return;
編集:うーん、あなたたちは確かevent.currentTarget
ですか?currentTarget
の代わりに何人かの人が言及しているのを見ますが、リスナーがバインドされている要素であるとは限りtarget
ませんか?event.currentTarget
body
これを試してみてください。
if ( $("*:focus").is("textarea, input") ) return;
$('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"; }
});
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');
}
});