js中onkeyup、onkeydown與onkeypress的區別


本文詳細介紹了onkeyup、onkeydown與onkeypress三者在用法上的區別,通過實例了解三者在響應事件時的不同,有需要的朋友參考學習下。

說明:
onkeyup、onkeydown與onkeypress三者在事件的響應上各有不同:
onkeydown 、onkeypress事件響應時,輸入的字符並沒有被系統接受,而響應onkeyup時,輸入流已經被系統接受

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則是輸入流被系統處理后發生的。

就是這些了,希望以上的介紹有助於大家理解onkeyup、onkeydown與onkeypress的區別,為以后靈活應用這幾個事件函數帶來幫助。


本文原始鏈接:http://www.jbxue.com/article/12977.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM