keyCode :
IE 与 w3c兼容浏览器 keydown ,keyup 时 event 的 keyCode 为实际按键的值 。
例如:
shift + a == 16 + 65
charCode :
w3c兼容浏览器 在 keypress(shift等非实际值键忽略) 时 event 存在 charCode 属性为对应字符值,keyCode 统一为0。
IE 只有 keyCode, 则在 keypress(shift等非实际值键忽略) 时仍然采用 keyCode ,不过此时为对应字符值,没有charCode 属性。
例如:
shift + a : {
ie: keyCode :97 ,charCode:undefined
firefox : keyCode:0 ,charCode:97
}
所以存在下列代码:
document.getElementById("xx").οnkeypress=function(event){ var evt = event || window.event; var code=evt.charCode || evt.keyCode; var char_=String.fromCharCode(code);//字符得到 };
ps:
注意不能直接 code 与 字符比较 ,比如过滤某些字符
不能够 code > 'a' ,而应该 char_ > 'a' ,code 做为数字和字符串比较,会强制字符串转化为数字进行比较 ,而'a' ,parse数字以后为 NaN ,则 code > 'a' ,code <'a' ,code =='a' 都为 false。
参考: