jQuery:按下J键并执行某些操作,按下H键并执行其他操作。

3
我无法得到一个简单的答案:当我按下字母J时,我希望它隐藏 $('.something'),当我按下字母H时,我希望它显示 $('.something')
press the letter J
$('.something').hide()

press the letter H
$('.something').show()
3个回答

5
$(document).bind('keydown', function(e) {
    if (e.keyCode == 72) {
        // press the letter H
        $('.something').show()
    } else if (e.keyCode == 74) {
        //press the letter J
        $('.something').hide()
    }
    return false;
});​

crazy demo


在哪里?嘿嘿,在某些情况下分号是可选的,供您参考。^_^ - Reigel Gallarde
在任何浏览器上都可以使用 e.keyCode 吗?即 'e.keyCode ? e.keyCode : e.which' - hluk
keydownkeyup不能用于基于字符的按键检测。只有keypress包含字符信息。 - Tim Down
2
我的观点是,你的代码在你的键盘上可能有效,但对于不同类型的键盘或在其他国家的键盘上,keydownkeyCode 为 72 和 74 的键并不一定对应于 H 和 J。 - Tim Down
@Tim - 啊,好主意。你是第一个告诉我的人。谢谢。 - Reigel Gallarde

0
document.addEventListener('keypress', function(e) {
    if (String.fromCharChode(e.charCode) == 'j') $('.something').hide();
    if (String.fromCharChode(e.charCode) == 'h') $('.something').show();
}, false);

1
干得好Delan :) 不可避免地,我必须指出给OP和其他人知道,在IE中这不起作用。 - Tim Down
呵呵,这正如我所预料的那样 :D - Delan Azabani
鉴于这是一个jQuery问题,你本可以使用$(document).keypress()并避免这场闹剧,我们两个都会很高兴的。 - Tim Down
啊,抱歉。我对jQuery的经验非常少,所以也许最好不回答这些问题了。然而,在没有涉及jQuery的情况下提出JavaScript问题现在是很少见的。;) - Delan Azabani

0

基于字符的按键检测只能使用keypress事件完成:

$(document).keypress(function(e) {
    var charCode = e.which;
    if (charCode) {
        var lowerCharStr = String.fromCharCode(charCode).toLowerCase();
        if (lowerCharStr == "h") {
            $('.something').show();
        } else if (lowerCharStr == "j") {
            $('.something').hide();
        }
    }
});

当我将这段代码添加到我的JavaScript文件中时,它导致了所有的jQuery/JavaScript停止工作...你知道为什么吗?当我将其他答案的代码添加到我的js文件中时,它也使我的js/jquery停止工作...嗯...所以我无法让它工作。 - android.nick
似乎在末尾有一个奇怪的字符。现在请尝试。 - Tim Down

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接