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

(编辑:jimmy 日期: 2024/11/19 浏览:2)

本文实例讲述了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.jb51.net/code/HtmlJsRun测试上述代码,运行效果如下图所示:

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

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

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

一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?