我有这个代码用于在按下一个键时重定向:
$('body').bind('keyup', function(event) {
if(event.keyCode==66){ window.location = "page.php"; }
});
好的,但是,如果用户在页面上有一个焦点输入字段,我怎么能使它不适用?
$('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');
}
});
您可以测试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;