探究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/zh-hant/n/372984.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TSIGP的頭像TSIGP
上一篇 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

發表回復

登錄後才能評論