2014-05-17 38 views
-1

我有一个问题,我的代码如下问题:KEYDOWN不注册

$(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(空格键)工作

再次编辑:只是解决我的问题,该键码的地方为大写字母

+0

浏览器控制台中显示哪些错误? –

+0

只有event.returnValue已被弃用。请改用标准的event.preventDefault()。 – spazhead

+0

我认为这里的工作http://jsfiddle.net/VZ5c6/ –

回答

1

改为使用​​。 keypress为字母d返回100而不是68。

测试差异here

+0

刚才意识到你说的这个。谢谢 – spazhead

+0

不用担心。确保你在不同的浏览器中测试。 (我链接的页面非常有用。) –

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 { 

    } 
}); 
}); 
+0

生成动画感谢您的帮助,但它仍然不能解决我的问题,即时通讯仍然会使用文档。 :) – spazhead

+0

你可以给我你的HTML吗? – underscore

+0

我所有的身体标记里面都是

spazhead