为什么赢得keyup()和keydown()很好地一起玩?

时间:2011-02-22 09:07:43

标签: jquery

我无法让jQuery keyupkeydown事件协同工作。看到这个jsFiddle:http://jsfiddle.net/CXkam/1/

这里的代码也很容易:

$(document).keyup(function (event) {
    alert('Keyup');
});
$(document).keypress(function(e) {
    alert('Keypress: ' + String.fromCharCode(e.which));
});
$(document).keydown(function(e) {
    alert('Keydown: ' + String.fromCharCode(e.which));
});

如果您注释掉keypress()keydown()处理程序,则keyup()警报会触发。

但如果你不这样做,那么keyup()永远不会发射。

为什么不呢?

谢谢!

2 个答案:

答案 0 :(得分:7)

如果在对话框启动时释放密钥,则.keyup和.keypress事件将不会触发,因为密钥消息被发送到对话框,由于我对事物的理解非常有限,因此不会被视为文件的一部分。你可以做什么,如果你想看到它“工作”,按住一个键(让我们去 T !),按空格键关闭对话框,然后释放 T 键。然后将.keyup消息发送到文档并按预期进行处理。

如果你摆脱了.keydown和.keypress函数 - 或者其中的警报 - 那么.keyup就可以了。

答案 1 :(得分:5)

嗯,我认为这实际上与alert()的问题有关。也许它被称为太快或其他东西。因为如果用console.log调用替换它,你可以清楚地看到它正在工作

http://jsfiddle.net/WJsV6/在FF中尝试一下。所有3种方法实际上都是