java Script 中的keyCode 和charCode

mac2022-06-30  26

其实很长一段时间,我都没有完全弄明白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

最新回复(0)