JS DOM编程笔记 - 键盘事件(十七)

曾经遇到一个面试题,如何判断用户按下了回车键?回车键的keyCode是什么?当时回答了大体流程,没有答出keyCode是什么,回来拿电脑跑了一下,是13

今天我们来学习键盘事件的处理。

键盘事件介绍

当我们使用键盘时就会触发键盘事件,主要有下面三个键盘事件:

  • keydown – 当按下键盘上的一个键时触发,当按住这个键时它会重复触发。

  • keyup – 当松开键盘上的一个键时触发。

  • keypress – 当按下 a、b 或 c 等字符键时触发,按下左箭头键、home 键等不会触发,当按住键盘上的键时,按键也会重复触发。

键盘事件通常在文本框上触发,所有元素都支持键盘事件。

当我们按下键盘上的字符键时,将会按以下顺序触发三个键盘事件:

  1. keydown
  2. keypress
  3. keyup

keydownkeypress 事件在对文本框进行任何更改之前触发,而 keyup 事件在对文本框进行更改之后触发。 如果您按住字符键,则 keydownkeypress 会重复触发,直到松开该键。

当按下非字符键时,首先触发 keydown 事件,然后触发 keyup 事件。 如果按住非字符键,则 keydown 会重复触发,直到您松开该键为止。

监听键盘事件

要监听键盘事件,按照以下步骤:

  • 首先,选择将触发键盘事件的元素。 通常,它是一个文本框。

  • 然后,使用 addEventListener() 来绑定事件。

最简单示例如下:

<input type="text" id="message">

<script>
  let msg = document.getElementById('message');

  msg.addEventListener("keydown", (event) => {
  	// 处理keydown
  	console.log('keydown');
  });

  msg.addEventListener("keypress", (event) => {
  	// 处理keypress
  	console.log('keypress');
  });

  msg.addEventListener("keyup", (event) => {
  	// 处理keyup
  	console.log('keyup');
  });
</script>

如果按下字符键将会依次打印keydownkeypresskeyup

如果按下其他功能键将会依次打印keydownkeyup

键盘事件对象

键盘事件对象有三个重要的属性:keycodekeyCodekey 属性返回已按下的字符,code 属性返回物理键代码,keyCode返回该键的数字代码。

比如,如果按下 z 字符键,则 event.key 返回 z,而 event.code 返回 KeyZ, event.keyCode 返回90。

请看以下示例:

<!DOCTYPE html>
<html>
<head>
	<title>键盘事件对象: Key/Code/keyCode</title>
</head>
<body>
  <input type="text" id="message">

  <script>
    let textBox = document.getElementById('message');
    textBox.addEventListener('keydown', (event) => {
      console.log(`key=${event.key},code=${event.code},keyCode=${event.keyCode}`);
    });
  </script>
</body>
</html>

如果输入字符z,将看到下面的输出

key=z,code=KeyZ,keyCode=90

如果按下功能键Enter回车键,将输出

key=Enter,code=Enter,keyCode=13

总结

  • 当按下键盘上的字符键时,keydownkeypresskeyup 事件将依次触发。功能键只会触发 keydown 和keyup 事件。

  • 键盘事件对象有三个重要的属性:keycodekeyCode 属性,通过它们来判断用户按下了哪个键。key 属性返回按下的键的值,code返回键盘上的物理键,keyCode返回数字的代码。

一起学习更多前端知识,微信搜索【小帅的编程笔记】,每天更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值