其实很长一段时间,我都没有完全弄明白keyCode 和charCode ,自己也认真看过,但是就是理解不透彻,为了防止以后再出现混乱,写篇博客记录一下吧!
首先 在不同的浏览器中,他们有不同的说法哦。
IE keyCode IE浏览器中event对象的属性(方法),
类型:Integer 可读写
描述:对于keypress事件,指示按下的键的Unicode字符;对于keyup\keydown 事件,指示按下的键盘是数字表示键。
/*获取键盘的keycode 值*/ document.οnkeydοwn=function(event){ var event=event||window.event; document.getElementById("showZone").innerHTML=event.keyCode; };
DOM keyCode DOM浏览器中event对象的属性(方法),
类型:Integer 可读写
描述:指示按下的键盘的数字表示键。
charCode DOM浏览器中event对象的属性(方法),
类型:Integer 可读
描述:指示按下的键的Unicode字符值;
/**完整测试代码/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Key Events Example</title> <script type="text/javascript"> function handleEvent(oEvent) { var oTextbox = document.getElementById("txt1"); oTextbox.value += "\n>" + oEvent.type; //获取事件的类型 oTextbox.value += "\n target is " + (oEvent.target || oEvent.srcElement).id; //获取引起该事件的元素/对象//Dom支持的是target,IE支持的是srcElement oTextbox.value += "\n keyCode is " + oEvent.keyCode; oTextbox.value += "\n charCode is " + oEvent.charCode;//oTextbox.value += "\n dxk is " + String.fromCharCode(oEvent.charCode); var arrKeys = []; if (oEvent.shiftKey) { arrKeys.push("Shift"); } if (oEvent.ctrlKey) { arrKeys.push("Ctrl"); } if (oEvent.altKey) { arrKeys.push("Alt"); } oTextbox.value += "\n keys down are " + arrKeys; } </script></head><body><p>Type some characters into the first textbox.</p><p><textarea id="txtInput" rows="15" cols="50" οnkeydοwn="handleEvent(event)" οnkeypress="handleEvent(event)" οnkeyup="handleEvent(event)"></textarea></p><p><textarea id="txt1" rows="15" cols="50"></textarea></p></body></html>
参考资料:http://blog.csdn.net/yezhouyong/article/details/8991540
当我按下“a键(注意是小写的字母)时,
在火狐中会得到 keydown:keyCode is 65 charCode is 0
keypress:keyCode is 0 charCode is 97
keyup: keyCode is 65 charCode is 0
在谷歌中会得到 keydown:keyCode is 65 charCode is 0
keypress:keyCode is 97 charCode is 97
keyup: keyCode is 65 charCode is 0
在IE中会得到 keydown:keyCode is 65 charCode is undefined
keypress:keyCode is 97 charCode is undefined
keyup: keyCode is 65 charCode is undefined
而当我按下shift键时,
在火狐中会得到 keydown:keyCode is 16 charCode is 0
keyup: keyCode is 16 charCode is 0
不会得到任何的charCode值,因为按shift并没输入任何的字符,而且也不会触发keypress事件(具体原因见我的另一篇文章)。
在谷歌中会得到 keydown:keyCode is 16 charCode is 0
keyup: keyCode is 16 charCode is 0
在IE中会得到 keydown:keyCode is 16 charCode is undefined
keyup: keyCode is 16 charCode is undefined
小结:在keydown事件里面,事件包含了keyCode – 用户按下的按键的物理编码。在keypress里,keyCode包含了字符编码,即表示字符的ASCII码。这样的形式适用于所有的浏览器 – 除了火狐,它在keypress事件中的keyCode返回值为0。
如果你想获取用户实际敲击的按钮,用keydown事件来获取事件对象,并获取keyCode值,这在所有浏览器都行的通。另一方面,如果你想获取用户输 入的字符,那么就使用keypress来获取,然后获取charCode(火狐和safari)或是keyCode(其他浏览器)。
字母和数字键的键码值(keyCode)按键键码按键键码按键键码按键键码A65J74S83149B66K75T84250C67L76U85351D68M77V86452E69N78W87553F70O79X88654G71P80Y89755H72Q81Z90856I73R82048957
数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)按键键码按键键码按键键码按键键码0968104F1112F71181979105F2113F8119298*106F3114F9120399+107F4115F101214100Enter108F5116F111225101-109F6117F121236102.110 7103/111
控制键键码值(keyCode)按键键码按键键码按键键码按键键码BackSpace8Esc27Right Arrow39-_189Tab9Spacebar32Dw Arrow40.>190Clear12Page Up33Insert45/?191Enter13Page Down34Delete46`~192Shift16End35Num Lock144[{219Control17Home36;:186\|220Alt18Left Arrow37=+187]}221Cape Lock20Up Arrow38,<188'"222
多媒体键码值(keyCode)按键键码按键键码按键键码按键键码音量加175 音量减174 停止179 静音173 浏览器172 邮件180 搜索170 收藏171
转载于:https://www.cnblogs.com/autumn123/p/4526221.html