我正在尝试显示用户使用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”。为什么要复制密钥?
答案 0 :(得分:3)
问题出在您的*
选择器中,该选择器同时应用于<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>