探究keyup和keydown事件

一、介绍

在前端开发中,代码执行通常与用户操作有关。用户操作中,常用的是键盘事件,其中keydown和keyup事件是最为常见的两种。这两种事件都可以用来监测用户按键,但它们有不同的触发时机和执行效果。接下来将详细介绍这两种事件。

二、keydown事件

keydown事件在用户按下键盘上任何一个键之后触发,其效果为向操作系统重复持续发送按下键盘的命令。也就是说,当用户长按某一个键时,这个事件会不停地执行,直到该键抬起。下面是一个简单的代码示例:


document.addEventListener('keydown', function(event) {
  console.log('按下了键' + event.key)
})

上述代码将会在键盘上的任何键被按下时,将事件信息输出到控制台上。

三、keyup事件

keyup事件在用户释放键盘上任何一个键之后触发,其效果为向操作系统发送释放键盘的命令。也就是说,当用户释放某一个键时,这个事件只会执行一次。下面是一个简单的代码示例:


document.addEventListener('keyup', function(event) {
  console.log('松开了键' + event.key)
})

上述代码将会在键盘上的任何键被释放时,将事件信息输出到控制台上。

四、keydown和keyup的区别

从上述代码示例中我们可以看出,keydown和keyup的差别在于事件触发的时机和执行次数。为了更好地理解这两种事件的差异,我们可以在代码中添加一些具体的应用场景来说明。

例如,在一个表单中,用户需要输入一段文本,假设这段文本只能含有数字和字母,其他的字符是无效的。下面是一段利用keydown事件的代码:


const input = document.querySelector('input');

input.addEventListener('keydown', function(event) {
  const code = event.keyCode;

  if ((code  57) && // 不是数字
      (code  90) && // 不是大写字母
      (code  122)) {// 不是小写字母
    event.preventDefault();
  }
});

上述代码将会在用户按下任何除了数字和字母以外的键时,阻止默认的按键行为。这种情况下,由于keydown事件会不断地重复执行,如果不添加这个if判断,这个文本框会被禁止使用。

再举一个相反的情况,假设需要用户在窗口中控制小球的位置,利用键盘上的”上””下””左””右”键。下面是一段利用keyup事件的代码:


let position = {
  x: 0,
  y: 0
};

document.addEventListener('keyup', function(event) {
  switch(event.keyCode) {
    case 37:
      position.x -= 10; // 左移
      break;
    case 38:
      position.y -= 10; // 上移
      break;
    case 39:
      position.x += 10; // 右移
      break;
    case 40:
      position.y += 10; // 下移
      break;
  }

  document.querySelector('.ball').style.transform = 'translate(' 
    + position.x + 'px,' + position.y + 'px)';
});

上述代码将会在用户按下”上””下””左””右”键时,通过修改小球的位置实现控制。由于keyup事件只会触发一次,这段代码不会出现小球不受控制的情况。

五、总结

以上就是keydown和keyup事件的介绍及应用。无论是在输入文本还是控制游戏中,我们都可以通过这两种事件来实现对键盘的监控和响应。在应用过程中,要充分认识它们的差异和应用场景,使得开发的效果更加精准和流畅。

原创文章,作者:TSIGP,如若转载,请注明出处:https://www.506064.com/n/372984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TSIGPTSIGP
上一篇 2025-04-25 15:26
下一篇 2025-04-25 15:26

相关推荐

  • 抖音外放亲妈下葬事件的背后真相

    近期,一段抖音外放亲妈下葬的视频引发广泛关注和热议。不少人对这个事件感到震惊和愤怒,认为这种行为非常不尊重亲人,触犯了社会公德和家庭道德。但是,事情真相到底是什么呢?我们有必要从多…

    编程 2025-04-28
  • cc.director.on事件监听器

    本文将从多个方面详细介绍Cocos Creator中的cc.director.on事件监听器。 一、cc.director.on的作用和用法 cc.director.on是Coco…

    编程 2025-04-27
  • JavaScript点击事件全方位指南

    一、click事件基础 click事件是最常用的鼠标事件之一,当元素被单击时触发。click事件适用于大多数HTML元素(<a>、<button>)和SVG…

    编程 2025-04-25
  • 详解JavaScript onclick事件

    一、onclick的基础知识 onclick事件是JavaScript中最常用的事件之一,它在用户点击某个HTML元素时触发。通常我们可以通过给元素添加一个onclick属性来绑定…

    编程 2025-04-25
  • CSS 事件穿透

    在 Web 开发中,CSS 负责网页的样式,而 JavaScript 负责网页的行为。虽然两者有不同的职责,但在实际的开发过程中,我们经常会遇到将二者结合起来的场景。比如需要通过 …

    编程 2025-04-25
  • onclick事件详解

    实现交互功能是Web开发的重要部分,而onclick事件就是其中一个最常用的交互事件之一。在本文中,我们将从多个角度对onclick事件进行详细阐述。 一、使用onclick事件实…

    编程 2025-04-24
  • 事件驱动模型

    一、事件驱动模型一般分为几部分 事件驱动模型一般分为三部分: 1.事件源 2.事件对象 3.事件监听器 事件源是指事件发起的对象,事件对象是指事件的具体内容,事件监听器是用于处理事…

    编程 2025-04-24
  • Vue中的鼠标悬停事件Vue.onmouseover

    一、简介 Vue建立在响应式和组件化的概念之上,并且包含许多内置的指令,其中就包含了v-on指令。v-on指令是Vue中非常重要的一个指令,用于绑定事件,并且它能够根据事件类型,自…

    编程 2025-04-24
  • EL-Button 点击事件全方位解析

    一、基本概念 EL-Button 是饿了么 UI 组件库中的一个按钮组件,具有多种类型和样式。 二、点击事件绑定 为 EL-Button 组件绑定点击事件,可以使用 v-on 指令…

    编程 2025-04-23
  • CSS事件穿透

    一、什么是CSS事件穿透? CSS事件穿透指的是鼠标事件(如click、hover等)在父元素上失效,穿透到子元素上触发。在某些特殊情况下,开发者希望透过子元素触发父元素的鼠标事件…

    编程 2025-04-23

发表回复

登录后才能评论