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