onkeyup,onkeydown和onkeypress的區(qū)別介紹
更新時間:2013年10月21日 17:00:21 作者:
三者在事件的響應(yīng)上還有一點不同,就是onkeydown 、onkeypress事件響應(yīng)的時候輸入的字符并沒有被系統(tǒng)接受,而響應(yīng)onkeyup的時候,輸入流已經(jīng)被系統(tǒng)接受
msdn上有三者的區(qū)別:
名稱 說明
onkeypress
這個事件在用戶按下并放開任何字母數(shù)字鍵時發(fā)生。系統(tǒng)按鈕(例如,箭頭鍵和功能鍵)無法得到識別。
onkeyup
這個事件在用戶放開任何先前按下的鍵盤鍵時發(fā)生。
onkeydown
這個事件在用戶按下任何鍵盤鍵(包括系統(tǒng)按鈕,如箭頭鍵和功能鍵)時發(fā)生。
======================
<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>
當(dāng)按下回車時,焦點從文本框移到按鈕上。如果把它換成“onkeypress”,焦點不會轉(zhuǎn)移,也不會失去。但是如果換成“onkeyup”,則失去焦點,頁面重新載入。
測試發(fā)現(xiàn)onkeydown 事件最先執(zhí)行,其次是onkeypress,最后是onkeyup;onkeydown 和onkeypress會影響onkeyup的執(zhí)行。三個事件同事在的話,都是alert的話,只會彈出2個alert,up事件的alert不會彈出。
三者在事件的響應(yīng)上還有一點不同,就是onkeydown 、onkeypress事件響應(yīng)的時候輸入的字符并沒有被系統(tǒng)接受,而響應(yīng)onkeyup的時候,輸入流已經(jīng)被系統(tǒng)接受。由于onkeydown 比onkeypress先執(zhí)行,再根據(jù)上面的例子可以知道,onkeydown 觸發(fā)的時候輸入流正要進入系統(tǒng),也就是說onkeydown 事件一完,輸入流就進入了系統(tǒng),無法改變。所以通過onkeydown 事件可以改變用戶是按了哪個鍵;而onkeypress事件則是在輸入流進入系統(tǒng)后觸發(fā)的,但輸入流暫未被系統(tǒng)處理,此時已經(jīng)不能改變輸入流了;onkeyup則是輸入流被系統(tǒng)處理后發(fā)生的。
名稱 說明
onkeypress
這個事件在用戶按下并放開任何字母數(shù)字鍵時發(fā)生。系統(tǒng)按鈕(例如,箭頭鍵和功能鍵)無法得到識別。
onkeyup
這個事件在用戶放開任何先前按下的鍵盤鍵時發(fā)生。
onkeydown
這個事件在用戶按下任何鍵盤鍵(包括系統(tǒng)按鈕,如箭頭鍵和功能鍵)時發(fā)生。
======================
復(fù)制代碼 代碼如下:
<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>
當(dāng)按下回車時,焦點從文本框移到按鈕上。如果把它換成“onkeypress”,焦點不會轉(zhuǎn)移,也不會失去。但是如果換成“onkeyup”,則失去焦點,頁面重新載入。
測試發(fā)現(xiàn)onkeydown 事件最先執(zhí)行,其次是onkeypress,最后是onkeyup;onkeydown 和onkeypress會影響onkeyup的執(zhí)行。三個事件同事在的話,都是alert的話,只會彈出2個alert,up事件的alert不會彈出。
三者在事件的響應(yīng)上還有一點不同,就是onkeydown 、onkeypress事件響應(yīng)的時候輸入的字符并沒有被系統(tǒng)接受,而響應(yīng)onkeyup的時候,輸入流已經(jīng)被系統(tǒng)接受。由于onkeydown 比onkeypress先執(zhí)行,再根據(jù)上面的例子可以知道,onkeydown 觸發(fā)的時候輸入流正要進入系統(tǒng),也就是說onkeydown 事件一完,輸入流就進入了系統(tǒng),無法改變。所以通過onkeydown 事件可以改變用戶是按了哪個鍵;而onkeypress事件則是在輸入流進入系統(tǒng)后觸發(fā)的,但輸入流暫未被系統(tǒng)處理,此時已經(jīng)不能改變輸入流了;onkeyup則是輸入流被系統(tǒng)處理后發(fā)生的。
您可能感興趣的文章:
- jquery keypress,keyup,onpropertychange鍵盤事件
- javascript KeyDown、KeyPress和KeyUp事件的區(qū)別與聯(lián)系
- javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
- C# winform編程中響應(yīng)回車鍵的實現(xiàn)代碼
- winform攔截關(guān)閉按鈕觸發(fā)的事件示例
- winform 使用Anchor屬性進行界面布局的方法詳解
- winform模擬鼠標(biāo)按鍵的具體實現(xiàn)
- C# WinForm程序完全退出的問題解決
- 解決C# winForm自定義鼠標(biāo)樣式的兩種實現(xiàn)方法詳解
- WinForm中KeyDown,KeyPress和KeyUp的順序與區(qū)別解析
相關(guān)文章
簡單總結(jié)JavaScript中的String字符串類型
就像其他語言那樣,js中的字符串類型可以表示一串字符,由雙引號包住,這里簡單總結(jié)JavaScript中的String字符串類型的一些基礎(chǔ)知識2016-05-05為何JS操作的href都是javascript:void(0);呢
本文主要是由于看了《javascript模式》之后看到各大網(wǎng)站的JS操作的href都是javascript:void(0);,可是書中明明是說“JS中避免使用void”所產(chǎn)生的思考,記錄下來,也請大神能夠解惑2015-11-11javascript 全選與全取消功能的實現(xiàn)代碼
全選與全取消在工作過程中經(jīng)常會使用到,是因為它很方便,同時可以提高用戶體驗值,本文介紹如何使用javascript實現(xiàn)全選與全取消功能,需要了解的朋友可以參考下2012-12-12