2014-05-17 40 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