msdn上有三者的區別: 名稱 說明
onkeypress
這個事件在用戶按下並放開任何字母數字鍵時發生。系統按鈕(例如,箭頭鍵和功能鍵)無法得到識別。
onkeyup
這個事件在用戶放開任何先前按下的鍵盤鍵時發生。
onkeydown
這個事件在用戶按下任何鍵盤鍵(包括系統按鈕,如箭頭鍵和功能鍵)時發生。
======================
復制代碼 代碼如下:
<html>
<script>
function checkForm(){
if(event.keyCode ==13){
event.keyCode =9;
}
}
</script>
<body>
<form name ="form1">
<input type="text" name = "text1" onkeydown = "checkForm()">
<input type="button" name = "button1" value="按鈕">
</form>
</body>
</html>
當按下回車時,焦點從文本框移到按鈕上。如果把它換成“onkeypress”,焦點不會轉移,也不會失去。但是如果換成“onkeyup”,則失去焦點,頁面重新載入。
測試發現onkeydown 事件最先執行,其次是onkeypress,最後是onkeyup;onkeydown 和onkeypress會影響onkeyup的執行。三個事件同事在的話,都是alert的話,只會彈出2個alert,up事件的alert不會彈出。
三者在事件的響應上還有一點不同,就是onkeydown 、onkeypress事件響應的時候輸入的字符並沒有被系統接受,而響應onkeyup的時候,輸入流已經被系統接受。由於onkeydown 比onkeypress先執行,再根據上面的例子可以知道,onkeydown 觸發的時候輸入流正要進入系統,也就是說onkeydown 事件一完,輸入流就進入了系統,無法改變。所以通過onkeydown 事件可以改變用戶是按了哪個鍵;而onkeypress事件則是在輸入流進入系統後觸發的,但輸入流暫未被系統處理,此時已經不能改變輸入流了;onkeyup則是輸入流被系統處理後發生的。