Javascript keyDown未注册

Javascript keyDown未注册,javascript,jquery,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 (

我的代码有问题,如下所示:

$(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(空格键),它似乎可以工作


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

使用文档而不是正文:

$(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 {

    }
});
});

改为切换到
keydown
keypress
返回字母d的100而不是68


测试差异。

谢谢你的帮助,但这仍然不能解决我的问题,尽管如此,我还是会使用文档来代替。:)你能给我你的html吗?我的身体标签里只有你浏览器控制台中出现的错误。只有event.returnValue不推荐使用。请改用标准的event.preventDefault()。我认为在这里你似乎对
currentx
currenty
有很多混淆。在后两种情况下,你增加X,但你总是根据你刚刚意识到的y来设置动画。谢谢,不用担心。确保您也在不同的浏览器中进行测试。(我链接的页面非常有用。)