当前位置:首页 > JavaScript

js实现键盘

2026-03-14 02:25:36JavaScript

键盘事件监听

在JavaScript中,可以通过监听键盘事件来响应用户的按键操作。常用的事件包括keydownkeyupkeypress

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

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

常用键盘事件属性

键盘事件对象包含多个属性,用于获取按键信息:

  • event.key: 返回按键的字符串表示(如 "A"、"Enter")。
  • event.code: 返回物理按键的代码(如 "KeyA"、"Enter")。
  • event.keyCode: 已废弃,返回按键的ASCII码(不推荐使用)。
  • event.ctrlKey/event.shiftKey/event.altKey: 布尔值,表示是否按下修饰键。
document.addEventListener('keydown', function(event) {
    if (event.key === 'Enter') {
        console.log('回车键被按下');
    }
    if (event.ctrlKey && event.key === 's') {
        console.log('Ctrl+S 被按下');
        event.preventDefault(); // 阻止默认行为(如保存网页)
    }
});

实现键盘快捷键

通过组合键和特定按键可以实现快捷键功能:

document.addEventListener('keydown', function(event) {
    if (event.ctrlKey && event.key === 'k') {
        console.log('Ctrl+K 快捷键触发');
        event.preventDefault();
    }
});

游戏中的键盘控制

在游戏开发中,通常需要持续监听按键状态以实现移动等操作:

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['ArrowLeft']) {
        console.log('向左移动');
    }
    requestAnimationFrame(gameLoop);
}
gameLoop();

虚拟键盘实现

创建一个屏幕虚拟键盘需要HTML/CSS构建界面,并通过JavaScript绑定点击事件:

<div class="keyboard">
    <button data-key="A">A</button>
    <button data-key="B">B</button>
    <!-- 更多按键 -->
</div>
document.querySelectorAll('.keyboard button').forEach(button => {
    button.addEventListener('click', function() {
        const keyEvent = new KeyboardEvent('keydown', {
            key: this.getAttribute('data-key')
        });
        document.dispatchEvent(keyEvent);
    });
});

输入框增强

为输入框添加特殊键盘处理,如自动格式化或限制输入:

js实现键盘

const input = document.getElementById('phone-input');
input.addEventListener('keydown', function(event) {
    // 只允许数字、退格和删除键
    if (!/[0-9]|Backspace|Delete/.test(event.key)) {
        event.preventDefault();
    }
});

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

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…