keyDown没有注册

时间:2014-05-17 12:47:37

标签: javascript jquery

我的代码出现问题如下:

$(document).ready(function() {
var currenty = 0;
var currentx = 0;
$("body").keypress(function(event) {
    if (event.keyCode === 68) {
        $(".box").animate({marginLeft: currenty + 30}, 200);
        currenty += 30;
    } else if (event.keyCode === 65) {
        $(".box").animate({marginLeft: currenty - 30}, 200);
        currenty -= 30;
    } else if (event.keyCode === 87) {
        $(".box").animate({marginTop: currenty + 30}, 200);
        currentx += 30;
    } else if (event.keyCode === 83) {
        $(".box").animate({marginTop: currenty - 30}, 200);
        currentx -= 30;
    } else {

    }
});
});

我对这段代码的问题是,当我按下一个键时,没有任何反应。

编辑:如果我将第一个键码更改为32(空格键)

似乎有效

再次编辑:刚刚解决了我的问题,关键代码是大写字母的位置

2 个答案:

答案 0 :(得分:1)

转而使用keydown。对于字母d,keypress返回100而不是68。

测试差异here

答案 1 :(得分:0)

使用文档而不是正文:

$(document).ready(function() {
var currenty = 0;
var currentx = 0;
$(document).keypress(function(event) {
    if (event.keyCode === 68) {
        $(".box").animate({marginLeft: currenty + 30}, 200);
        currenty += 30;
    } else if (event.keyCode === 65) {
        $(".box").animate({marginLeft: currenty - 30}, 200);
        currenty -= 30;
    } else if (event.keyCode === 87) {
        $(".box").animate({marginTop: currenty + 30}, 200);
        currentx += 30;
    } else if (event.keyCode === 83) {
        $(".box").animate({marginTop: currenty - 30}, 200);
        currentx -= 30;
    } else {

    }
});
});