- 浏览: 565139 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
javascript判断是否按回车键
<input id="chatMsg" name="chatMsg" type="text"
size="90" onkeypress="enterHandler(event);"/>
function enterHandler(event)
{
//获取用户单击键盘的“键值”
var keyCode = event.keyCode ? event.keyCode
: event.which ? event.which : event.charCode;
//如果是回车键
if (keyCode == 13)
{
sendRequest();
}
}
一、onkeyup,onkeydown,onkeypress
在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、onkeyup三个事件进行出来。该三个事件的执行顺序如下:onkeydown > onkeypress >onkeyup。
在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应。当在实际使用中,会发现这几者有些不同的差别。
onkeypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,onkeydown和onkeyup均
可以对系统功能键进行有效的拦截,但事件截获的位置不同,可以根据具体的情况选择不同的键盘事件。
由于onkeypress不能对系统功能键进行捕获,导致window.event对象的keyCode属性和onkeydown,onkeyup键盘事
件中获取的keyCode属性不同,主要表现在onkeypress事件的keyCode对字母的大小写敏感,而onkeydown、onkeyup事件
不敏感;onkeypress事件的keyCode无法区分主键盘上的数字键和付键盘数字键的,而onkeydown、onkeyup的keyCode对
主付键盘的数字键敏感。
在Maxthon浏览器中,onkeydown和onkeyup有连续响应两次键盘事件的BUG,onkeydown不能正常地对F1~F12的功能键进行正常的截获(onkeyup没有发现该问题),具体原因不明。不知道以后是否会进行订正。
键盘事件包括keydown、kepress和keyup三种,每次敲击键盘都会(依次?)触发这三种事件,其中keydown和keyup是比较低级的
接近于硬件的事件,通俗的理解是这两个事件可以捕获到你敲击了键盘中某个键;而keypress是相对于字符层面的较为高级点的事件,这个事件能够捕捉到
你键入了哪个字符。可以这样理解,如果你敲击了A键,keydown和keyup事件只是知道你敲击了A键,它并不知道你敲的是大写的A(你同时按下了
Shift键)还是敲的是小写a,它是以"键"为单位,你敲入了大写的A,它只是当成你敲下了shift和A两个键
而已,但是keypress可以捕捉到你是敲入的大写的A还是小写的a.
在介绍Prototype中Event对象前先介绍一下浏览器中的事件模型,浏览器中的事件主要有HTML事件、鼠标事件和键盘事件,前两种事件比较好理解,这里主要解释一下键盘事件以及它在IE和firefox中的区别.
还要理解一个概念是键盘中的键分为字符(可打印)键和功能键(不可打印),功能键包括Backspace, Enter
, Escape, the arrow keys, Page Up, Page Down, and F1 through F12 等
下面说一下键盘事件的具体使用方法,
键盘事件的event对象中包含一个keyCode属性,IE中只有这一个属性,当为keydown和keyup
事件是,keycode属性表示你具体按下的键(也称为virtual
keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code)
在firefox中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时
候,keyCode表示的就是你具体按的键,charCode为0;当捕捉的是keypress事件时,keyCode为0,charCode指的是你按
下的字符
当捕捉的是keypress事件时,当你按的是可打印字符时,keyCode为0,charCode指的是你按下的字符的键值,当你按的是不可打印字符时,keyCode为按下的键的键值,charCode为0
注意:功能键不会触发keypress事件,因为keypress对应的就是可打印的字符,但是有一点IE和FF
中的区别,你按下一个字符键的同时按下alt键,在IE中不触发keypress事件,但是在ff中可触发,我发现在IE中按下ctrl键的时候只有按下
q键会触发事件其他的要么不会触发事件,要么被浏览器IE自身捕获了,例如你按下ctrl_A,全选某个东西,你按ctrl_S保存文件,但是在FF中就
好多了,事件都是先传递到网页,再向外传递
鉴于IE和FF中的区别,如果你比较懒的话,建议只使用keydow和keyup事件,这两种事件的使用在IE和FF中基本上没有区别,也不要捕获ctrl_A等被浏览器定义为快捷键的事件
键盘事件event对象还有三个其他的属性altKey, ctrlKey, and shiftKey 来判断你按下一个键的时候是否按下了alt等键,这三个属性使用比较简单,三种事件都可以使用,也不存在ie和ff的兼容性问题
Netscape/Firefox
/Opera中不支持
window.event.keyCode,需要用event.which代替,IE用event.keCode方法获取当前被按下的键盘按键值,而
NetScape/FireFox/Opera用的则是event.which
发表评论
-
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2014-12-09 10:33 786原文地址:http://www.techo ... -
241个jquery插件—jquery插件大全
2014-12-09 10:26 802原文地址:http://blog.csdn.net/adsda ... -
前端ui的js框架
2014-09-04 16:45 594原文地址:http://www.quickui.net/v3/ ... -
2014 年最火的21个JavaScript框架
2014-09-03 17:25 478原文地址:http://www.iteye.com/news/ ... -
Bootstrap 栅格系统
2014-08-08 15:53 518原文地址:http://www.cnblogs.com/lin ... -
自定义Bootstrap
2014-08-08 10:14 686原文地址:http://www.w3cplus.com/css ... -
使用python/casperjs编写终极爬虫-客户端App的抓取
2014-08-06 18:09 9551.缘起 随着移动互 ... -
使用Selenium和PhantomJS解析带JS的网页
2014-08-06 17:57 1048有的网页,不能直接通过wget/curl等命令、或者直接使用P ... -
数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置
2014-08-06 17:56 621原文地址:http://blog.chin ... -
ubuntu12.04 下安装nodejs【整理】
2014-06-12 14:38 733ubuntu12.04 下安装nodejs【整理】 作者:杭州 ... -
Ubuntu安装nodeJS
2014-06-12 14:38 513Ubuntu安装nodeJS 安装环境 ubuntu12. ... -
纯js页面跳转整理
2014-05-20 18:06 527纯js页面跳转整理 js页面跳转 js方式的页面跳转 1. ... -
细说Cookie
2013-09-29 15:14 650细说Cookie 阅读目录 开始 ... -
JavaScript Source Map 详解
2013-08-30 09:49 808JavaScript Source Map 详解 ... -
主题:50个令人惊奇的jQuery插件
2013-05-29 18:17 989jQuery拥有强大的有创造性的程序员群体。 然而,它很难通 ... -
jquery触发事件
2013-05-23 17:25 612Snandy Stop, thinking is th ... -
jquery事件命名空间
2013-05-23 17:13 518JQUERY事件命名空间 2012 ... -
jQuery的事件命名空间-Namespaced Events
2013-05-23 17:12 633jQuery的事件命名空间-Namespaced Event ... -
JQuery自定义事件的应用 JQuery最佳实践
2013-05-23 16:54 800本文主要介绍JQuery框架里面支持的自定义事件模型,通过实 ... -
jquery插件开发
2013-05-13 15:01 715此文引自:http://www.cnblogs.com/to ...
相关推荐
在阅读本文前,相信大家应该都有所了解,在js获取键盘按下的键值有:event.keyCode、event.charCode和event.which。 其中: 谷歌浏览器:对event.keyCode、event.charCode和event.which都兼容。 火狐浏览器:对event...
为了实现跨浏览器兼容性,jQuery内部对`event.which`进行了处理,如果`event.which`为null,而`event.charCode`或`event.keyCode`不为null,则会将它们的值赋给`event.which`。 此外,`event.which`不仅可以用于...
`event.charCode`可获取到产生的字符代码。 二、监听键盘事件 使用`addEventListener`方法可以监听键盘事件: ```javascript document.addEventListener('keydown', function(event) { console.log('Key pressed...
var charCode = event.charCode || event.keyCode; var isNonAscii = charCode > 127; if (!isNonAscii && charCode !== 0) { // ASCII character pressed } } ``` 4. 使用`event.preventDefault()`和`event...
上面的示例代码中,通过`theEvent.keyCode`、`theEvent.which`以及`theEvent.charCode`分别获取了不同浏览器环境下的按键码。 - **`keyCode`**:适用于大多数情况,但在某些浏览器(如Firefox)中可能无法区分某些...
2. `event.charCode`:返回按下的字符的Unicode值,适用于打印键。 3. `event.key`:返回按下的键的标准化标识符,例如"Enter"、"Esc"等。 4. `event.ctrlKey`、`event.altKey`、`event.shiftKey` 和 `event.metaKey...
` 这行代码则是为了兼容不同的浏览器特性,其中`e.keyCode` 主要用于IE浏览器,而 `e.which` 和 `e.charCode` 则主要用于Firefox和其他浏览器。 #### 三、实践应用示例 ##### 1. 键盘事件捕获 ```javascript ...
而`event.which`对于键盘事件等同于`event.charCode || event.keyCode`,对于鼠标事件,它返回1(左键)、3(右键)或2(中键)。 `event.type`属性则包含了事件的类型,如"click"、"mouseover"等,方便开发者区分...
这段代码确保在键盘事件中,如果`event.which`未定义,那么它会根据`event.charCode`或`event.keyCode`来设置`event.which`的值。 对于鼠标事件,jQuery进行了额外的处理: ```javascript if ( !event.which && ...
键盘事件中keyCode、which和charCode的兼容性测试 在前端开发中,键盘事件是一个非常重要的事件类型,它可以捕捉用户在键盘上的输入操作。键盘事件中有三个关键属性:keyCode、which和charCode,这三个属性都是用于...
- **which**:兼容性更好的键码获取方式,等同于`keyCode`或`charCode`。 #### 四、示例代码 下面是一段简单的示例代码,用于演示如何监听键盘事件: ```javascript document.addEventListener('keydown', ...
- 当处理键盘事件时,要考虑到不同浏览器之间的差异,例如,有些浏览器可能需要使用`event.charCode`而非`event.keyCode`来获取字符的Unicode编码。 - 键盘事件还有其他属性,如`event.shiftKey`(判断Shift键是否被...
它可以标准化不同浏览器的event.keyCode和event.charCode的差异,返回一个数值来代表按键。例如,鼠标左键单击时event.which返回1,中间键返回2,右键返回3。 6. this 和 event.target 的区别 在jQuery事件处理函数...
event.which : event.charCode; if (keyCode == 13) { var i; for (i = 0; i < field.form.elements.length; i++) if (field == field.form.elements[i]) break; i = (i + 1) % field.form.elements.length; ...
- `charCode`:`keypress`事件中可用,表示被按下的键所对应的字符值。 #### 3. 浏览器兼容性问题 - **不同浏览器的区别**: - 在Firefox和Opera中,功能键也会触发`keypress`事件。 - IE和其他浏览器之间在...
- `charCode`:在某些情况下,表示按下的字符的Unicode编码。 - `type`:事件类型,如"keydown"。 - `srcElement`和`target`:与鼠标事件相同,表示事件发生在哪个元素上。 - `which`:在旧版浏览器中,表示按下...
event.which : event.charCode; return keyCode; } ``` 有了获取键值的函数之后,接下来就可以编写监听回车键按下事件的代码了。例如,可以为文本输入框绑定一个keydown事件,当检测到回车键被按下时执行一个特定...
event.which : event.charCode; } // 判断是否按下Enter键 if (Code == 13) { for (var i = 0; i < inputs.length; i++) { if (inputs[i].id === document.activeElement.id) { i = i === (inputs.length - ...