1. 需求
最近要实现一个登陆界面的回车响应功能,在输入账号和密码之后,按回车键就可以直接登录。试了很多种方法,有些方法不兼容,最终用jqury实现了这个功能。
2. 细节
主要用到了jqury中的keypress方法,用来监听键盘的动作。
浏览器有3种按键事件——keydown,keypress和keyup,分别对应onkeydown、onkeypress和onkeyup 3个事件句柄。
一个典型的按键会产生所有这三种事件,依次是keydown–>keypress–>keyup。
完整的 key press 过程分为两个部分:1. 按键被按下;2. 按键被松开。
当按钮被按下时,发生 keydown 事件。当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上。keypress 事件与 keydown 事件类似。当按钮被按下时,会发生该事件。它发生在当前获得焦点的元素上。
不过,与 keydown 事件不同,每插入一个字符,就会发生 keypress 事件。
3.代码实现
登录界面如图所示(界面做的有点丑),由一个div和3个输入框,一个登陆按钮组成。
1 | <div id=c0 class="tab-style-1"> |
1 | .tab-style-1 { |
把键盘监听的区域放在div中,在3个输入框输入后按Enter键,都会触发keypress事件。
这里的e.keyCode ? e.keyCode : e.which ? e.which : e.charCode是为了兼容性,因为不同浏览器中的属性有所不同,IE只有keyCode属性,FireFox中有which和charCode属性,Opera中有keyCode和which属性,Chrome中有keyCode、which和charCode属性。
13表示enter按键的keycode编码。常见的keycode编码还有BackSpace 8 ,Tab 9 ,Shift 16。
1 | $(".tab-style-1").keypress(function (e){ |