鍵盤事件keydown、keypress、keyup隨筆整理總結


英文輸入法:
 
事件觸發順序:keydown - > keypress - > keyup

 
中文輸入法:
 
firfox:輸入觸發keydown,回車確認輸入觸發keyup
chrome:輸入觸發keydown、keyup,回車確認輸入只觸發keydown
IE:輸入觸發keydown、keyup,回車確認輸入觸發keydown,keyup
Safari:輸入觸發keydown、keyup,回車確認輸入觸發keydown,keyup
opera:輸入觸發keydown、keyup,回車確認輸入觸發keydown,keyup
 
keypress事件不能對系統功能鍵(例如:后退、刪除等,其中對中文輸入法不能有效響應)進行正常的響應,
keydown和keyup均可以對系統功能鍵進行有效的攔截,但事件截獲的位置不同。
 
鍵盤中的鍵分為字符(可打印)鍵和功能鍵(不可打印), 系統功能鍵 包括如下:
Esc、Tab、Caps Lock、Shift、Ctrl、Alt、 Enter、 Backspace、 Print Screen、Scroll Lock、Pause Break、Insert、Delete、 Home、 End、Page Up、Page Down,   F1 through F12,Num Lock、T he Arrow Keys。
 
keypress響應系統功能鍵總結:
Firefox:支持 Esc、 Enter、 Backspace、 Pause Break、 Insert、Delete、 Home、 End、Page Up、Page Down、 F1 through F12、 T he Arrow Keys
Chrome:支持 Enter
Oprea: 支持 Enter
Safari: 支持 Enter
IE: 支持Esc、 Enter
 
ps:
firefox: 上下左右鍵會觸發kepress.
 
chrome:  上下左右鍵不會觸發kepress.
 
opre a: 上下左右鍵不會觸發kepress.
 
safari: 上下左右鍵不會觸發kepress.
 
IE: 上下左右鍵不會觸發kepress.
 
================================================================================
keyCode( 鍵碼 ), which, charCode( 字符編碼)
 
keydown: 獲得keyCode, charCode=0
 
keypress: 字符(英文區分大小寫+數字  / * , .  ...等非功能鍵),keyCode=0 ,獲取charCode值, 反之獲取keyCode, charCode=0
 
keyup: 獲得keyCode, charCode=0
 
jquery 中 event.which = original.charCode != null ? original.charCode : original.keyCode;
 
 
總結:回車、上下左右、等功能鍵keydown、keypress、keyup都獲取keyCode,並且值相等。
 
 
開啟大寫情況,keydown、keypress(字母,主鍵盤數字、回車)、keyup,which值相等,小寫kepress獲取的which不同於keypress、keyup。
 
keypress事件的keyCode對字母的大小寫敏感,而keydown、keyup事件不敏感
keypress事件的which值無法區分主鍵盤上的數字鍵和 鍵盤數字鍵的,而keydown、keyup的 which值 對主附鍵盤的數字鍵敏感。
IE(ie9以下)只有一個屬性KeyCode屬性,當為keydown和keyup 事件是,keycode屬性表示你具體按下的鍵(也稱為virtual keycode),當捕捉的是keypress事件時keyCode屬性指的是你鍵入的字符(character code)   
 
標准瀏覽器中情況有些不同,event對象包含一個keyCode屬性和一個charCode屬性,keydown和keyup事件的時候,keyCode表示的就是你具體按的鍵,charCode為0;當捕捉的是keypress事件時,keyCode為0,charCode指的是你按下的字符, 鑒於IE和FF中的區別,如果你比較懶的話,建議只使用keydow和keyup事件
 
 
/**
本文所涉及瀏覽器(除ie)都為最新版本
**/


免責聲明!

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



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