当前位置: 首页> 财经> 股票 > 岳阳市公共资源交易网_陕西旅游必去十大景点_长沙官网seo服务_营销策划书范文1000字

岳阳市公共资源交易网_陕西旅游必去十大景点_长沙官网seo服务_营销策划书范文1000字

时间:2025/7/13 3:38:56来源:https://blog.csdn.net/moment159/article/details/147013813 浏览次数:0次
岳阳市公共资源交易网_陕西旅游必去十大景点_长沙官网seo服务_营销策划书范文1000字

事件类型——常见的键盘事件及应用

键盘事件是前端交互的重要组成部分,通过 keydownkeyup 可以精准监听用户的按键行为,结合 keycode 属性实现多样化的逻辑。在实际开发中,需根据场景选择合适的事件和属性,并注意兼容性和性能优化。


一、键盘事件基础:三种核心事件

1. keydown 事件

触发时机:

用户按下任意按键时触发(持续按住会重复触发)。

用途:

监听按键按下动作,常用于实时响应(如游戏控制、快捷键检测)。

示例:
<body><input type="text" id="input"><script>  const input = document.getElementById('input');  input.addEventListener('keydown', (event) => {console.log(`按下了 ${event.key}`);});</script>
</body>

2. keyup 事件

触发时机:

用户释放已按下的按键时触发。

用途:

监听按键释放动作,常用于处理最终输入(如搜索框输入完成后触发搜索)。

示例:
<body><input type="text" id="searchInput"><script>const searchInput = document.getElementById('searchInput');searchInput.addEventListener('keyup', (event) => {if (event.key === 'Enter') {console.log('触发搜索');}});</script>
</body>

3. keypress 事件(逐渐弃用,谨慎使用)

触发时机:

用户按下能产生字符的按键(如字母、数字,不包括功能键如 Shift、Enter)。

缺点:

兼容性差,且无法区分字符大小写(如 A 和 a 可能返回相同值),现代开发中推荐使用 keydown 或 keyup 替代。

二、事件对象属性:获取按键信息

1. key:按键的字符值(推荐使用)

  • 返回用户输入的字符(如 ‘a’、‘1’、‘Enter’),受键盘布局和输入法影响。

  • 示例:按下字母 A(小写键盘)返回 ‘a’,按下 Enter 返回 ‘Enter’。

2. code:按键的物理代码(推荐使用)

  • 返回按键的物理位置代码(如 ‘KeyA’、‘Enter’),不受键盘布局和输入法影响,适合检测功能键(如 F1、方向键)。

  • 示例:无论键盘布局如何,字母 A 对应的 code 始终是 ‘KeyA’,Enter 对应 ‘Enter’。

3. 过时属性:keyCode 和 which

  • keyCode 返回按键的 ASCII 码(如 A 是 65),但无法区分大小写和特殊字符,已被废弃。

  • 现代开发中请使用 key 或 code。

三、实战示例:打造键盘操作反馈工具

需求:

创建一个输入框,实时显示用户按下和释放的按键信息(包括 key 和 code)。

步骤 1:HTML 结构

<!DOCTYPE html>
<html>
<head><title>键盘事件实战</title>
</head>
<body><input type="text" id="input" placeholder="输入内容..."><div id="log"></div>  <script src="script.js"></script>
</body>
</html>

步骤 2:JavaScript 逻辑(script.js)

const input = document.getElementById('input');
const log = document.getElementById('log');
// 监听按键按下事件
input.addEventListener('keydown', (event) => {log.innerHTML += `<div>按下:${event.key}(code: ${event.code})</div>`;
});
// 监听按键释放事件
input.addEventListener('keyup', (event) => {log.innerHTML += `<div>释放:${event.key}(code: ${event.code})</div>`;
});

效果:

输入框中每一次按键操作,都会在下方实时显示 key 和 code 的值。

四、进阶技巧:处理组合键和特殊功能

1. 检测组合键(如 Ctrl + C)

通过 event.ctrlKey、event.shiftKey、event.altKey 判断是否按下控制键:


input.addEventListener('keydown', (event) => {// 检测 Ctrl + Cif (event.ctrlKey && event.key === 'c') {console.log('触发复制操作');  }  // 检测 Shift + 字母(大写输入)  if (event.shiftKey && /[a-z]/.test(event.key)) {console.log('输入大写字母');  }
});

2. 阻止默认行为(如禁止输入特殊字符)

通过 event.preventDefault() 阻止浏览器默认操作:

input.addEventListener('keydown', (event) => {// 禁止输入数字  if (/[0-9]/.test(event.key)) {event.preventDefault(); // 阻止输入    alert('不能输入数字!');  }
});

五、注意事项

  1. 兼容性:keypress 事件在不同浏览器中表现不一致,优先使用 keydown 和 keyup。

  2. key vs code

  • key 用于获取用户输入的字符(如文本输入场景)。
  • code 用于检测物理按键(如游戏中的方向键控制)。
  1. 性能:持续触发的 keydown 可能导致高频事件,建议通过 防抖(debounce) 优化。

六、练习任务

  1. 实现一个搜索框,当用户按下 Enter 键时触发搜索功能。

  2. 禁止文本框输入特殊字符(如 !@#$%)。

  3. 检测 Ctrl + Shift + S 组合键,触发保存操作。

关键字:岳阳市公共资源交易网_陕西旅游必去十大景点_长沙官网seo服务_营销策划书范文1000字

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: