JavaScript获取键盘事件

JavaScript中:

onkeydown 事件会在用户按下一个键盘按键时发生。

onkeypress 事件会在键盘按键被按下并释放一个键时发生。

onkeyup 事件会在键盘按键被松开时发生。

支持该事件的 JavaScript 对象:document, image, link, textarea

浏览器差异:Internet Explorer 使用 event.keyCode 取回被按下的字符,而 Netscape/Firefox/Opera 使用 event.which。

jQuery中:

keydown事件会在键盘按下时触发。

keypress 事件会在键盘按键被按下并释放一个键时发生。

keyup事件会在按键释放时触发。

代码示例:

 1 //js中写法
 2 document.onkeydown=function(event){
 3     var event = event || window.event;//浏览器兼容
 4     var keyCode = event.keyCode || event.which;//浏览器兼容
 5 
 6     if(keyCode == 13){ //绑定回车 
 7         document.getElementById("login").onclick; //自动触发登录按钮 
 8     } 
 9 
10 }
11 
12 //jQuery中写法
13 $(document).keydown(function(event){ 
14     var event = event || window.event;//浏览器兼容
15     var keyCode = event.keyCode || event.which;//浏览器兼容
16 
17     if(keyCode == 13){ //绑定回车 
18         $('#login').click(); //自动触发登录按钮 
19     } 
20 });

onkeyup的缺陷处理

<input type="text" onkeyup='this.value=this.value.replace(/[^\w_]/g,"");'/>

input框只能输入数字,但是该方法有个缺陷,当用户输入数字后想修改时,键盘的←键无法使光标向左移动,即便鼠标点击,使光标到指定位置,在按下键盘任意键修改时,光标还是会跑到最右端。

<input type="text"  onkeyup='if(event.keyCode!=8 && event.keyCode!=37 && event.keyCode!=16 && event.keyCode!=20 && event.keyCode!=39 && (event.keyCode<48 || event.keyCode>105) && (!event.shiftKey && event.keyCode != 189))this.value=this.value.replace(/[^\w_]/g,"");'/>

event.keyCode后边的数字代表的是键盘对应的按键,可以查看下边的keyCode对照表。上边代码中是按下键盘上数字按键,Backspace按键,←,→按键时,不作正则处理,从而避免了第一段代码的问题。

keyCode对照表

1、 字母和数字键的键码值

2、数字键盘上的键的键码值

3、功能键的键码值

4、控制键的键码值

5、多媒体键的键码值

 

posted @ 2017-04-07 16:52  一线大码  Views(444)  Comments(0)    收藏  举报