jQuery按键重复



我试图显示用户使用jQuery对检测到的按键所键入的内容。

例如,如果用户按下"a",则显示"a"。当他们按下"z"时,就会显示"az",依此类推

我的代码:

<script>
$(document).ready(function() {
var res = "";
$("*").keypress(function( event ) {
res = res + String.fromCharCode(event.which);
$("#go2").html(res);
});
});
</script>

<p id="go2"></p>

显示String.fromCharCode(event.which)而不是res可以正确显示按下的按键,但当前代码会复制按键。

当我按下"a"时,会显示"aaa"。按下一个新的键,如"z",然后显示"aaazzz"。为什么钥匙被复制?

问题出在*选择器中,它同时应用于<body><html>

简单地增加对body的特异性就会导致重复消失:

$(document).ready(function() {
var res = "";
$("body").keypress(function(event) {
res = res + String.fromCharCode(event.which);
$("#go2").html(res);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="go2"></p>