一、keypress、keydown和keyup。
1、介绍:
keypress--用户按下一个按键,并产生一个字符时发生(也就是类似Shift、Alt、Ctrl、Meta等之类的键除外)。一直按下按键时,它则持续发生。
keyup--用户释放着的键时发生。
2、事件触发顺序:
1)keydown 2)keypress 3)keyup
如果用户按一次某非字符按键(比如shift)时,则会按以下顺序触发事件:
1)keydown 2)keyup
用户按一次某非字符按键且不放,keydown和keypress事件将逐个持续触发,直至松开按键;如果用户按下非字符按键且不放,将只有keydown事件持续触发。
二、按键事件相关的keyCode/charCode。
1、IE事件属性:
keyCode:对于keypress事件,表示按下按键的Unicode字符;对于keydown或keyup事件,表示按下按键的数字代号。
2、DOM事件属性:
var iCharCode=oEvent.charCode;
var sChar=String.fromCharCode(iCharCode);
keyCode:表示按下按键的数字代号。
可以用事件的isChar属性检测是否有字符与之相关。
3、在keydown或keyup事件中,可用keyCode属性获取按下的按键的数值代码。
var iKeyCode=oEvent.keyCode;
4、检测Shift、Alt、Ctrl键:
var bShift=oEvent.shiftKey;
var bAlt=oEvent.altKey;
var bCtrl=oEvent.ctrlKey;
5、"Opera 7.5在检测不同的按键(
Shift、Alt、Ctrl键
)时有bug,它错误地将Shift键报告为Ctrl键。另外,它根本不会检测Alt键。