我试图显示用户使用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>