JavaScript键盘事件

本文详细讲解了JavaScript中键盘事件(keydown,keyup,keypress)的用法,包括如何跟踪按键组合、处理默认行为和自动重播,以及关键事件属性的使用。提升用户体验的关键交互技术。
摘要由CSDN通过智能技术生成

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》《krpano》《krpano中文文档》

​ 

✨ 前言

        键盘事件可以帮助我们响应用户的按键输入,是实现网页交互的重要方式之一。本文将详细介绍键盘事件的种类、属性和在JavaScript中的使用方式。

        相信学习后,大家不仅可以处理各种键盘活动,还可以创造键盘热键、键盘游戏等丰富的交互体验。让我们开始学习之旅吧!

✨ 正文

本文介绍最常用的键盘事件。

keydown 和 keyup

  • keydown - 按键被按下时触发。
  • keyup - 按键被松开时触发。
    input.onkeydown = function(e) {
      if (e.key == 'Enter') {
        alert('Enter pressed!'); 
      }
    };
    
    input.onkeyup = function(e) {
      if (e.key == 'Enter') {
        alert('Enter released');
      }
    };

这两个事件不区分字母大小写。

keypress

keypress 事件在按键被按下并产生字符时触发。特点是:

  • 区分字母大小写。
  • 特殊键(Shift、Esc 等)没有字符,不会触发。
    input.onkeypress = function(e) {
      // 获取输入的字符
      if (e.key == 'a') { 
        alert('a pressed'); 
      }
    };

跟踪按键组合

跟踪多个按键的组合按下,例如 “Ctrl+C”:

document.onkeydown = function(e){
  if (e.ctrlKey && e.key == 'c') {
    alert('Ctrl+C');
  }
};

直接访问 e.code 也可以获取物理按键名。

事件属性

键盘事件对象包含了按键详细信息,常用的属性有:

  • key: 按键的字符(字母或数字)
  • code: 按键的物理代码
  • altKey、ctrlKey、shiftKey: 对应按键是否同时按下
  • repeat: 是否因为按键被重复触发

例子:

elem.onkeydown = function(e) {
  console.log(e.key); // "a"
  console.log(e.code); // "KeyA"
  console.log(e.altKey); // false 
  console.log(e.repeat); // true(长按键时)
}

默认行为

某些按键组合会触发浏览器默认行为,可以通过 event.preventDefault() 来防止:

document.onkeydown = function(e) {
  if (e.key == 'F1') {
    e.preventDefault(); // 防止浏览器打开帮助页
  }
};

自动重播

对于长按按键,事件会自动重播。我们可以区分首次按下与重播事件:

let firstTime = true;

elem.onkeydown = function(e) {
  if (firstTime) {
    firstTime = false;
    return;
  }

  // 重复触发的代码
};

elem.onkeyup = () => firstTime = true; // 重置开关

 

✨ 结语

        键盘提供了极为重要的用户输入方式。学习使用键盘事件可以让我们更好地控制交互逻辑,优化用户体验。

        本文详细介绍了键盘事件的种类和属性,并通过示例展示了跟踪键盘组合和处理自动重复事件的方法。希望这篇博客能够全面提高大家对键盘事件的理解与应用。如果有任何问题,欢迎在评论区交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱蹦跶的大A阿

你的打赏就是我蹦跶的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值