当前位置: 首页 > news >正文

二、(JS)JS中常见的键盘事件

一、常见的键盘事件

  • onkeydown        某个键盘按键被按下
  • onkeypress        某个键盘按键被按下
  • onkeyup            某个键盘按键被松开

二、事件的执行顺序 onkeydown、onkeypress、onkeyup

  • down      事件先发生;
  • press      发生在文本被输入;
  • up          发生在文本输入完成;

怎么区分onkeydown, onkeypress?实际开发中并没有对这2个有严格的区分。

onkeydown 更侧重于按键动作本身,而 onkeypress 更注重实际字符的输入。如果你关心的是按键操作,如游戏控制或键盘快捷键,onkeydown 比较合适;如果你需要识别用户输入的文字,onkeypress 更适合。

onkeypress有可能按下键后没有松手(我自己理解press中文翻译是按压,代表还有压力嘛,所以有可能还没有松手),他会一直执行 onkeydown、onkeypress事件。

三、我们可以通过key和code来区分按下的键

  • code:“按键代码(“KeyA”,“ArrowLeft”等 ),特定于键盘上按键的物理位置。
  • key:字符(“A”, “a”等),对于非字符(non-character)的按键,通常具有与code相同的值。

那怎么获取?

答:event.key, event.code

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="text"><script>var inputEl = document.querySelector("input")inputEl.onkeydown = function () {console.log("keydown");}inputEl.onkeypress = function () {console.log("onkeypress");}inputEl.onkeyup = function (event) {console.log("onkeyup", event.key, event.code);}</script></body></html>

四、实战演练

需求1:点击按钮进行搜索。

需求2:敲我们的enter键也能触发搜索。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="text"><button>搜索</button><script>var inputEl = document.querySelector("input")var btnEl = document.querySelector("button")// inputEl.onkeydown = function () {//   console.log("keydown");// }// inputEl.onkeypress = function () {//   console.log("onkeypress");// }// inputEl.onkeyup = function (event) {//   console.log("onkeyup", event.key, event.code);// }// 点击按钮进行搜索btnEl.onclick = function () {console.log("进行搜索", inputEl.value);}inputEl.onkeyup = function () {if (event.key === "Enter") {console.log("进行搜索", inputEl.value);}}</script></body></html>

 

需求3:我按个s键,获取输入框的焦点。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="text"><button>搜索</button><script>var inputEl = document.querySelector("input")var btnEl = document.querySelector("button")// inputEl.onkeydown = function () {//   console.log("keydown");// }// inputEl.onkeypress = function () {//   console.log("onkeypress");// }// inputEl.onkeyup = function (event) {//   console.log("onkeyup", event.key, event.code);// }// 点击按钮进行搜索btnEl.onclick = function () {console.log("进行搜索", inputEl.value);}inputEl.onkeyup = function (event) {if (event.key === "Enter") {console.log("进行搜索", inputEl.value);}}// 按个s键,自动获取输入框的焦点。document.onkeyup = function (event) {if (event.code === "KeyS") {console.log("用户点击了s");inputEl.focus()}}</script></body></html>

http://www.lryc.cn/news/438594.html

相关文章:

  • 【CSS】样式水平垂直居中
  • 深入理解数据分析的使用流程:从数据准备到洞察挖掘
  • CSS 响应式设计(补充)——WEB开发系列36
  • Qt常用控件——QDateTimeEdit
  • 什么是上拉,下拉?
  • 76-mysql的聚集索引和非聚集索引区别
  • 每日一题——第八十八题
  • 【创作活动】学习使用哪个编程工具让你的工作效率翻倍?
  • 基于STM32C8T6的CubeMX:HAL库点亮LED
  • 职业院校数据科学与大数据技术专业人工智能实训室建设方案
  • JavaScript网页设计案例分析
  • 2024.9.15周报
  • QT模型视图结构1
  • Ubuntu20+Noetic+cartographer_ros编译部署
  • linux-L3-linux 复制文件
  • Kotlin:1.9.0 的新特性
  • golang实现从服务器下载文件到本地指定目录
  • C++数据结构-树的概念及分类介绍(基础篇)
  • 职场 Death Note
  • Vue3.0组合式API:computed计算属性、watch监听器、watchEffect高级监听器
  • RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全
  • 风格汇:奢华风格在UI设计中如何被定义的。
  • Vue2 qrcode+html2canvas 实现二维码的生成和保存
  • GEE 教程:利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析
  • Nginx 负载均衡:优化网站性能与可扩展性的利器
  • 【Python基础】Python错误和异常处理(详细实例)
  • 如何查看串口被哪个程序占用?截止目前最方便的方法
  • 深入理解SpringBoot(一)----SpringBoot的启动流程分析
  • MySql基础-单表操作
  • 【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载