我有这个代码用于在按下某个键时重定向:
$('body').bind('keyup', function(event) {
if(event.keyCode==66){ window.location = "page.php"; }
});
好的但是,如果用户在页面上有一个重点输入字段,怎么能使它不适用?
答案 0 :(得分:0)
您可以测试event.target
并查看它是什么类型的元素。如果它是input
,则返回时不做任何事情。具体地,
if (-1 != ['INPUT', 'TEXTAREA'].indexOf(event.target.nodeName)) return;
编辑:嗯,你们确定event.currentTarget
吗?我看到有几个人提到currentTarget
而不是target
,但event.currentTarget
总是body
元素,而侦听器绑定在哪个元素?
答案 1 :(得分:0)
尝试这可能是。
if ( $("*:focus").is("textarea, input") ) return;
答案 2 :(得分:0)
$('input').bind('keyup', function(event) {
if(event.keyCode==66 && !($(event.currentTarget).attr('id') ==='inputElement')){ window.location = "page.php"; }
});
OR
$('input').bind('keyup', function(event) {
if(event.keyCode==66 && !($(event.currentTarget).is(":focus"))){ window.location = "page.php"; }
});
答案 3 :(得分: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');
}
});