英文輸入法:
事件觸發順序: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)都為最新版本
**/