js如何检测键盘按键

来源:网站主作者:小诸葛头衔:草根站长
导读:本期聚焦于小伙伴创作的《js如何检测键盘按键》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《js如何检测键盘按键》有用,将其分享出去将是对创作者最好的鼓励。

在前端开发中,检测键盘按键是实现用户交互的常见需求,比如为页面添加快捷键、控制游戏角色移动、限制输入框输入内容等场景都需要用到相关能力。js提供了专门的键盘事件来监听用户的按键操作,开发者可以通过监听这些事件获取按键的相关信息。

js如何检测键盘按键

常用的键盘事件类型

js中主要提供了三类键盘事件,开发者可以根据实际需求选择合适的事件类型:

  • keydown:当用户按下键盘上的任意按键时触发,按住按键不放会持续触发该事件,所有按键都会触发这个事件,包括功能键、修饰键等。
  • keyup:当用户松开键盘上的按键时触发,每个按键松开时只会触发一次,同样支持所有类型的按键。
  • keypress:当用户按下字符键时触发,按住字符键不放会持续触发,该事件不会响应功能键、方向键等非字符按键,目前已经逐渐被废弃,不建议在新项目中使用。

如何获取按键的相关信息

当键盘事件触发时,事件对象会包含当前按键的相关属性,开发者可以通过这些属性判断用户按下了哪个按键:

key属性

key属性返回按键对应的字符串值,比如按下字母a会返回"a",按下回车键会返回"Enter",按下方向键上会返回"ArrowUp",这个值直观易懂,是目前推荐使用的属性。

keyCode属性

keyCode属性返回按键对应的数字编码,不同按键对应不同的数字,比如回车键的keyCode是13,空格键是32,方向键上是38。不过该属性已经被标准废弃,兼容性也不如key属性,仅建议在需要兼容老旧浏览器时使用。

code属性

code属性返回按键的物理位置对应的字符串,比如按下键盘左侧的Shift键会返回"ShiftLeft",右侧的Shift键会返回"ShiftRight",适合需要区分同功能不同位置按键的场景。

基础检测示例

下面是一个监听全局键盘按下事件,输出按键信息的简单示例:

// 监听全局的keydown事件
document.addEventListener('keydown', function(event) {
    // 输出按键的key值
    console.log('按下的按键key值:', event.key);
    // 输出按键的keyCode值
    console.log('按下的按键keyCode值:', event.keyCode);
    // 输出按键的code值
    console.log('按下的按键code值:', event.code);
});

常见场景实现

检测特定按键按下

如果需要在用户按下回车键时执行操作,可以通过判断event.key的值实现:

document.addEventListener('keydown', function(event) {
    // 判断按下的是否是回车键
    if (event.key === 'Enter') {
        console.log('用户按下了回车键');
        // 这里可以添加回车键对应的业务逻辑
    }
});

检测组合键

组合键比如Ctrl+S保存、Ctrl+C复制等,需要同时判断修饰键和普通按键的状态,修饰键对应的属性有ctrlKeyshiftKeyaltKeymetaKey,值为true时表示对应修饰键被按下:

document.addEventListener('keydown', function(event) {
    // 检测是否按下了Ctrl+S组合键
    if (event.ctrlKey && event.key === 's') {
        // 阻止浏览器默认的保存行为
        event.preventDefault();
        console.log('触发了Ctrl+S保存操作');
        // 这里添加自定义的保存逻辑
    }
});

限制输入框输入内容

如果需要限制输入框只能输入数字,可以监听输入框的keydown事件,过滤非数字按键:

// 获取输入框元素
const inputEle = document.querySelector('#numberInput');
inputEle.addEventListener('keydown', function(event) {
    // 获取按下的按键值
    const key = event.key;
    // 允许退格键、删除键、Tab键、方向键等操作
    const allowKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
    // 如果不是数字也不是允许的按键,就阻止默认行为
    if (!/^d$/.test(key) && !allowKeys.includes(key)) {
        event.preventDefault();
        console.log('只能输入数字');
    }
});

注意事项

  • 键盘事件默认是冒泡的,如果需要只在特定元素内监听按键,可以给该元素绑定事件,而不是监听全局document。
  • 部分浏览器对keypress事件的支持不一致,且标准已经废弃该事件,优先使用keydown和keyup事件。
  • 在使用keyCode属性时,不同浏览器的编码可能存在差异,尽量不要依赖该属性做逻辑判断。
  • 如果监听的事件需要阻止浏览器默认行为,比如Ctrl+S阻止默认保存,要使用event.preventDefault()方法。

JavaScript键盘事件keydownkeyupkeyCode修改时间:2026-06-11 02:45:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。