JavaScript键盘事件常见用法实例分析


Posted in Javascript onJanuary 03, 2019

本文实例讲述了JavaScript键盘事件常见用法。分享给大家供大家参考,具体如下:

JavaScript 键盘事件有以下3种

keydown
键盘按键按下(如果按着不放,会持续触发该事件),可以捕获组合键。

keypress
键盘非功能按键按下(在keydown之后触发,如果按着不放会持续触发该事件),只能捕获单个键。

keyup
键盘按键弹起,可以捕获组合键。

全局事件对象event

event.ctrlKey
功能键”ctrl”键是否按下。

event.altKey
功能键”alt”键是否按下。

event.shiftKey
功能键”shift”键是否按下。

event.keyCode
键盘按键键码。

event.charCode
键盘非功能按键的ASCII值,可以用其区分大小写。

String.fromCharCode(event.charCode)
将ASCII值转化为对应的字符形式。

注意点

  • KeyDown触发后,不一定触发KeyUp。比如此时单击鼠标右键。
  • 其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
  • KeyPress主要用来捕获数字(包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符。
  • KeyDown 和 KeyUp 的keyCode区分小键盘和主键盘的数字字符。KeyPress 则不区分小键盘和主键盘的数字字符。

keyCode key
8 BackSpace BackSpace
9 Tab Tab
12 Clear
13 Enter
16 Shift_L
17 Control_L
18 Alt_L
19 Pause
20 Caps_Lock
27 Escape Escape
32 space space
33 Prior
34 Next
35 End
36 Home
37 Left
38 Up
39 Right
40 Down
41 Select
42 Print
43 Execute
45 Insert
46 Delete
47 Help
48 0 equal braceright
49 1 exclam onesuperior
50 2 quotedbl twosuperior
51 3 section threesuperior
52 4 dollar
53 5 percent
54 6 ampersand
55 7 slash braceleft
56 8 parenleft bracketleft
57 9 parenright bracketright
65 a A
66 b B
67 c C
68 d D
69 e E EuroSign
70 f F
71 g G
72 h H
73 i I
74 j J
75 k K
76 l L
77 m M mu
78 n N
79 o O
80 p P
81 q Q at
82 r R
83 s S
84 t T
85 u U
86 v V
87 w W
88 x X
89 y Y
90 z Z
96 KP_0 KP_0
97 KP_1 KP_1
98 KP_2 KP_2
99 KP_3 KP_3
100 KP_4 KP_4
101 KP_5 KP_5
102 KP_6 KP_6
103 KP_7 KP_7
104 KP_8 KP_8
105 KP_9 KP_9
106 KP_Multiply KP_Multiply
107 KP_Add KP_Add
108 KP_Separator KP_Separator
109 KP_Subtract KP_Subtract
110 KP_Decimal KP_Decimal
111 KP_Divide KP_Divide
112 F1
113 F2
114 F3
115 F4
116 F5
117 F6
118 F7
119 F8
120 F9
121 F10
122 F11
123 F12
124 F13
125 F14
126 F15
127 F16
128 F17
129 F18
130 F19
131 F20
132 F21
133 F22
134 F23
135 F24
136 Num_Lock
137 Scroll_Lock
187 acute grave
188 comma semicolon
189 minus underscore
190 period colon
192 numbersign apostrophe
210 plusminus hyphen macron
211
212 copyright registered
213 guillemotleft guillemotright
214 masculine ordfeminine
215 ae AE
216 cent yen
217 questiondown exclamdown
218 onequarter onehalf threequarters
220 less greater bar
221 plus asterisk asciitilde
227 multiply division
228 acircumflex Acircumflex
229 ecircumflex Ecircumflex
230 icircumflex Icircumflex
231 ocircumflex Ocircumflex
232 ucircumflex Ucircumflex
233 ntilde Ntilde
234 yacute Yacute
235 oslash Ooblique
236 aring Aring
237 ccedilla Ccedilla
238 thorn THORN
239 eth ETH
240 diaeresis cedilla currency
241 agrave Agrave atilde Atilde
242 egrave Egrave
243 igrave Igrave
244 ograve Ograve otilde Otilde
245 ugrave Ugrave
246 adiaeresis Adiaeresis
247 ediaeresis Ediaeresis
248 idiaeresis Idiaeresis
249 odiaeresis Odiaeresis
250 udiaeresis Udiaeresis
251 ssharp question backslash
252 asciicircum degree
253 3 sterling
254 Mode_switch

测试范例

<html>
  <body>
    <script type="text/javascript">
      function appendText(str) {
        document.body.innerHTML += (str+"<br/>");
      }
      document.onkeydown = function(){
        //如果长按的话,会持续触发keydown和keypress(如果有该事件的话)
        appendText("onkeydown");
        if(event.ctrlKey) {
          appendText("ctrlKey");
        }
        if(event.altKey) {
          appendText("altKey");
        }
        if(event.shiftKey) {
          appendText("shiftKey");
        }
        //无charCode属性,只有keypress才有该属性
        if(event.charCode) {
          appendText(String.fromCharCode(event.charCode));
        }
        if(event.keyCode) {
          appendText(event.keyCode);
        }
        //该语句只对chrome和edge有效,可以屏蔽keypress(只对chrome和edge浏览器有效)
        //event.returnValue = false;
      };
      document.onkeypress = function() {
        //keypress无法监听到组合键
        appendText("onkeypress");
        if(event.ctrlKey) {
          appendText("ctrlKey");
        }
        if(event.altKey) {
          appendText("altKey");
        }
        if(event.shiftKey) {
          appendText("shiftKey");
        }
        //charCode是字母的Unicode值
        if(event.charCode) {
          appendText(String.fromCharCode(event.charCode));
        }
      }
      document.onkeyup = function() {
        appendText("onkeyup");
      }
    </script>
  </body>
</html>

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,运行效果如下图所示:

JavaScript键盘事件常见用法实例分析

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript自动设置IFrame高度的小例子
Jun 08 Javascript
jquery配合css简单实现返回顶部效果
Sep 30 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
在node中如何使用 ES6
Apr 22 Javascript
微信小程序实现自动定位功能
Oct 31 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
Vue跨域请求问题解决方案过程解析
Aug 07 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 #Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 #Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 #Javascript
JavaScript实现数字前补“0”的五种方法示例
Jan 03 #Javascript
35个最好用的Vue开源库(史上最全)
Jan 03 #Javascript
原生js实现移动端Touch轮播图的方法步骤
Jan 03 #Javascript
发布一款npm包帮助理解npm的使用
Jan 03 #Javascript
You might like
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
Python中的index()方法使用教程
2015/05/18 Python
python函数装饰器用法实例详解
2015/06/04 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
python3大文件解压和基本操作
2017/12/15 Python
python框架中flask知识点总结
2018/08/17 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python列表(List)知识点总结
2019/02/18 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Python matplotlib可视化实例解析
2020/06/01 Python
python对一个数向上取整的实例方法
2020/06/18 Python
中东奢侈品市场:Coveti
2019/05/12 全球购物
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
倡议书的格式写法
2015/04/28 职场文书
团日活动总结格式
2015/05/11 职场文书
员工聘用合同范本
2015/09/21 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL