keycode,charcode,which区别

引用:在标准浏览器下获取键盘按键我们可以使用e.which,但是非标准下没有这个属性,所以大部分情况下用keyCode,但是这是存在兼容性问题的。我们来看下他两的区别:

onkeydown: e.keyCode  有值

onkeyup: e.keyCode 有值

onkeypress: e.keyCode 为0

onkeydown: e.charCode  为0

onkeyup: e.charCode 为0

onkeypress: e.charCode 有值

结论:charCode 返回onkeypress事件触发键值的字母代码。

         keyCode 返回 onkeydown 或 onkeyup 事件的键的代码。

___________________________________________________________________________________________________

一 :不同浏览器和不同事件,会有不同的属性值。上述结论并不绝对,还和浏览器及输入法(主要是微软中文输入法)有关。

    1. event.key: 返回值为输入的值,特殊键是各自的名字。(异常:当在非IE及微软输入法时,有实质输入的键返回值为 “”Process“”,其他键不变)。

    2.keyCode,charCode,which:返回值为 keyCode 。在微软中文输入时,返回值为229.(而此时也无法阻止默认行为)

    保险做法是,无论哪种都做兼容:code = event.keyCode || event.charCode;(同时判断229特殊情况)

    3. String.fromCharCode(keyCode):将返回码转成返回内容,但是除了有实质内容的键,其他的键转化结果有点乱。

猜你喜欢

转载自my.oschina.net/u/3272730/blog/1838930