jquery keypress问题

时间:2013-01-30 02:23:29

标签: jquery keypress

我有这个代码用于在按下某个键时重定向:

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

好的但是,如果用户在页面上有一个重点输入字段,怎么能使它不适用?

4 个答案:

答案 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');
    }
});