Keypress没有响应字符代码

时间:2015-12-07 15:45:19

标签: javascript jquery keypress

$(document).keypress(function(e) {
    if(e.which == 32) {
        alert('You pressed spacebar!');
    }
});

$(document).keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

$(document).keypress(function(e) {
    if(e.which == 40) {
        alert('You pressed down arrow!');
    }
});

这是我的javascript文件。没有CSS,HTML只是一个空白的骨架。

它读取输入和空格键就好了,但是向下箭头,向上箭头,或者我按下的任何键都没有输入或空格键没有注册?

如何解决这个问题?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

箭头键不会生成keypress事件。他们会生成keydownkeyup个事件。

请注意,虽然字母键确实生成keypress,但which值可能不是您期望的值。例如,在我的浏览器和操作系统上,按 a 键会生成which = 65,这是A的字符代码,而不是a。密钥代码是密钥代码,而不是字符代码。更多关于this no-longer-maintained, but still quite useful, page

直播示例: (我添加了return false以防止默认处理,因为否则Stack Snippet窗口往往会滚动,但这不是必须的收到活动)



$(document).keypress(function(e) {
    if(e.which == 32) {
        display('You pressed spacebar!');
        return false;
    }
});

$(document).keypress(function(e) {
    if(e.which == 13) {
        display('You pressed enter!');
        return false;
    }
});

$(document).keydown(function(e) {
    if(e.which == 40) {
        display('You pressed down arrow!');
        return false;
    }
});

function display(msg) {
  $("<p>").text(msg).appendTo(document.body);
}
&#13;
p {
  margin: 0;
}
&#13;
<p>Click this pane to focus it, then press spacebar, Enter, or down-arrow</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;