当前位置:首页 > JavaScript

js实现键盘输入

2026-01-30 12:26:30JavaScript

监听键盘事件

在JavaScript中,可以通过addEventListener监听键盘事件。常用的事件类型包括keydownkeyupkeypresskeydown在按键按下时触发,keyup在按键释放时触发,keypress在按键按下并产生字符时触发(已废弃,不推荐使用)。

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

document.addEventListener('keyup', function(event) {
    console.log('按键释放:', event.key);
});

获取按键信息

事件对象event包含按键的详细信息,常用属性如下:

  • event.key: 返回按键的字符串表示(如"a"、"Enter")。
  • event.code: 返回物理按键的代码(如"KeyA"、"Enter")。
  • event.ctrlKeyevent.shiftKeyevent.altKeyevent.metaKey: 返回布尔值,表示是否按下了修饰键。
document.addEventListener('keydown', function(event) {
    if (event.key === 'Enter') {
        console.log('按下了回车键');
    }
    if (event.ctrlKey && event.key === 's') {
        event.preventDefault(); // 阻止默认行为
        console.log('按下了Ctrl+S');
    }
});

阻止默认行为

某些按键会触发浏览器的默认行为(如空格键滚动页面)。可以通过event.preventDefault()阻止默认行为。

js实现键盘输入

document.addEventListener('keydown', function(event) {
    if (event.key === ' ') {
        event.preventDefault();
        console.log('空格键被阻止');
    }
});

组合键监听

通过检查修饰键状态,可以实现组合键监听。例如监听Ctrl+C

document.addEventListener('keydown', function(event) {
    if (event.ctrlKey && event.key === 'c') {
        console.log('按下了Ctrl+C');
    }
});

输入框焦点控制

通过focus()blur()方法可以控制输入框的焦点。例如按下Tab键切换焦点:

js实现键盘输入

const inputs = document.querySelectorAll('input');
document.addEventListener('keydown', function(event) {
    if (event.key === 'Tab') {
        event.preventDefault();
        const currentInput = document.activeElement;
        let index = Array.from(inputs).indexOf(currentInput);
        index = (index + 1) % inputs.length;
        inputs[index].focus();
    }
});

虚拟键盘模拟

可以通过创建自定义按钮模拟虚拟键盘,触发键盘事件:

const button = document.createElement('button');
button.textContent = '模拟按键A';
button.addEventListener('click', function() {
    const event = new KeyboardEvent('keydown', { key: 'a' });
    document.dispatchEvent(event);
});
document.body.appendChild(button);

游戏控制示例

在游戏开发中,键盘输入常用于控制角色移动:

const keys = {};
document.addEventListener('keydown', function(event) {
    keys[event.key] = true;
});
document.addEventListener('keyup', function(event) {
    keys[event.key] = false;
});

function gameLoop() {
    if (keys['ArrowUp']) console.log('向上移动');
    if (keys['ArrowDown']) console.log('向下移动');
    requestAnimationFrame(gameLoop);
}
gameLoop();

标签: 键盘输入js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组…