本文詳細介紹了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