键盘事件拥有两个属性,keyCode和CharCode,他们之间有一些不一样之处。keyCode表示用户按下键的实际的编码,而charCode是指用户按下字符的编码。
IE下
keyCode:对于keypress事件,表示按下按键的Unicode字符;对于keydown/keyup 事件,表示按下按键的数字代码。无charCode属性。
DOM标准下
keyCode:表示按下按键的数字代码。
charCode:按下按键的Unicode字符。
 
当我按下“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
小结:
1.在keydown事件里面,事件包含了keyCode – 用户按下的按键的物理编码。
2.在keypress里,keyCode包含了字符编码,即表示字符的ASCII码。这样的形式适用于所有的浏览器 – 除了火狐,它在keypress事件中的keyCode返回值为0。
如果你想获取用户实际敲击的按钮,用keydown事件来获取事件对象,并获取keyCode值,这在所有浏览器都行的通。另一方面,如果你想获取用户输入的字符,那么就使用keypress来获取,然后获取charCode(火狐和safari)或是keyCode(其他浏览器)。
 
 
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>keyCode属性-蚂蚁部落</title>
<script type="text/javascript">
/*function keyEvent(ev){
var ev=ev||window.event; alert(ev.keyCode);
} document.onkeydown=keyEvent; */ function keyEvent(ev){
var ev=ev||window.event; alert(ev.charCode);
}
document.onkeypress=keyEvent;
//火狐下onkeypress a-------97 ,onkeydown a --------0
//火狐下onkeypress b-------98 ,onkeydown b --------0 var getCharCode = function(ev){
var ev=ev||window.event;
if (typeof ev.charCode == "number"){
alert(ev.charCode);
return ev.charCode;
} else {
alert(ev.keyCode);
return ev.keyCode;
}
} document.onkeydown=getCharCode;
//a--------65
//b--------66 </script>
</head>
<body>
</body>
</html>

由于浏览器差异键值输出差异,给出个兼容获取键值的方法

var getCharCode = function(ev){
var ev=ev||window.event;
if (typeof ev.charCode == "number"){
//alert(ev.charCode);
return ev.charCode;
} else {
//alert(ev.keyCode);
return ev.keyCode;
}
}
 

keyCode 与charCode的更多相关文章

  1. js获取键盘按下的键值event.keyCode,event.charCode,event.which的兼容性

    js获取键盘按下的键值有event.keyCode,event.charCode和event.which 其中: 谷歌浏览器对event.keyCode,event.charCode和event.wh ...

  2. java Script 中的keyCode 和charCode

    其实很长一段时间,我都没有完全弄明白keyCode 和charCode ,自己也认真看过,但是就是理解不透彻,为了防止以后再出现混乱,写篇博客记录一下吧! 首先  在不同的浏览器中,他们有不同的说法哦 ...

  3. javascript中keyCode与charCode属性

    好记性不如烂笔头啊,最近总是忘记这两个属性的区别.想了想,从别人博客上转一遍过来吧,时常看下 键盘事件拥有两个属性,keyCode和CharCode,他们之间有一些不一样之处.keyCode表示用户按 ...

  4. JS键盘事件对象之keyCode、charCode、which属性对比

    先说一些有关键盘事件的事项:用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这 ...

  5. keypress和keydown事件及keyCode和keyChar

    二:keypress和keydown事件: 现只在IE10.chrome(版本 32.0.1700.107 m).firefox(25.0.1)中测试了.   IE8 chrome firefox $ ...

  6. js中获取event keycode的兼容办法

    window.onkeypress=function(e){ var event = e || window.event, //在ff下event会做为参数传进来,ie下会在window下 keyCo ...

  7. js/jquery键盘事件及keycode大全

    js/jquery的键盘事件分为keypress.keydown和keyup事件 一.键盘事件 1.keydown()事件当按钮被按下时,发生 keydown 事件. 2.keypress()事件ke ...

  8. python之前端

    一.Html总结 1.Html简介 HTML 是一种标记语言 忽略大小写,语法宽松 使用 HTML 标记和元素,可以: 控制页面和内容的外观 发布联机文档 使用 HTML 文档中插入的链接检索联机信息 ...

  9. JS事件模型小结

    三种事件模型:原始事件模型(DOM0),DOM2事件模型,IE事件模型: 不同点: 事件程序的注册(给HTML元素所对应的JS对象绑定事件) 事件传播的过程 事件模型的注册: 一.原始事件模型(没有兼 ...

随机推荐

  1. c#对文件进行MD5加密校验

    public static string GetFileMd5Hash(string strFileFullPath) { // Create a new instance of the MD5Cry ...

  2. 存根类STUB

    当我们创建一个指定各种方法集合的接口时,我们可以考虑使用"存根”STUB,“存根”就是用空方法体实现该接口中所有方法的类,这样我们就可以通过继承该“存根”创建一个实现该接口的类,这样一来,该 ...

  3. poj - 2386 Lake Counting && hdoj -1241Oil Deposits (简单dfs)

    http://poj.org/problem?id=2386 http://acm.hdu.edu.cn/showproblem.php?pid=1241 求有多少个连通子图.复杂度都是O(n*m). ...

  4. IO(二)

    package com.bjsxt.io.buffered; import java.io.BufferedInputStream; import java.io.BufferedOutputStre ...

  5. [HIHO1323]回文字符串(区间dp)

    题目链接:http://hihocoder.com/problemset/problem/1323 思路:区间dp,按照区间长度枚举所有区间和区间的起始位置.这时也可获取到区间的末位,比对这两个字符是 ...

  6. 【Todo】InnoDB、MyISAM、数据库引擎

    关于InnoDB和MyISAM引擎的对比,下面这篇讲的挺好 http://www.cnblogs.com/vicenteforever/articles/1613119.html 这一篇关于InnoD ...

  7. 为laravel5.1生产环境linux从源代码安装PHP

    laravel5.1正式发布,该版本号称是第一个LTS的版本,它对环境的要求也比较高,至少要PHP5.59以上. 现在网上找了很久,只能自己从头安装新版本的PHP yum install libmcr ...

  8. sass 常用函数的整理

    @charset "utf-8"; @import "compass/css3/inline-block"; @import "compass/css ...

  9. 【同行说技术】swift最全学习资料汇集(一)

    Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序.2015年12月4日,苹果公司宣 ...

  10. hibernate注解(转)

    一.实体Bean 每个持久化POJO类都是一个实体Bean, 通过在类的定义中使用 @Entity 注解来进行声明. 声明实体Bean @Entity public class Flight impl ...