1.Vue的键盘事件中的keyup与keydown

vue对原生js中的键盘事件进行了封装

  • onkeyup => keyup
  • onkeydown => keydown

我们可以借助他们对元素进行键盘事件的监听

<div id="#app"><!-- keyup触发键盘事件 --><input type="text" @keyup="fun"><hr><!-- keydown触发键盘事件 --><input type="text" @keydown="fun">
</div><script>Vue.config.productionTip = false //关闭开发提示const vm = new Vue({methods: {//事件回调fun(event){console.log('fun回调触发',event.target.value)}},})vm.$mount('#app')
</script>

2.keyup与keydown事件的触发响应

①keyup触发场景:

当用户按下键,再次抬起时,被触发

②keydown触发场景:

当用户按下键时,立刻被触发

效果如图所示:

当用户一直按着一个键不松开时,我们就会看到两种不同的结果

触发原理:

js语言会根据不同的事件触发判断进行响应

keyup:

监听用户键盘是否有键弹起,以此来判断是否进行响应

keydown:

监听用户键盘是否有键被按下,以此来判断是否响应

keyup与keydown的特殊情况

当我们通过keyup与keydown绑定的键与浏览器中的快捷键重合、冲突时

使用keyup可能不会响应,因为浏览器对于快捷键的响应都是通过onkeydown的模式

(也就是按下马上就被触发)

而我们使用keyup进行绑定与响应,在键还没有弹起时,浏览器已经执行了其他指令,阻断了页面中原本的keyup事件响应

模拟场景:当我们想要给input文本框,绑定Tab键的响应事件时

<div id="app"><h3>keyup触发Tab键盘事件</h3><input type="text" :style="{height:'20px'}"@keyup.tab="fun"/><hr><h3>keydown触发Tab键盘事件</h3><input type="text":style="{height:'20px'}"@keydown.tab="fun"></div><script>Vue.config.productionTip = falseconst vm = new Vue({methods: {fun(event){console.log('fun回调触发',event.target.value)}},})vm.$mount('#app')
</script>

当你在输入完内容后,通过keyup监听tab键盘事件,你会发现绑定的回调没有被调用,

而通过keyup监听tab键盘事件,则会正常执行

原因:

当你按下tab键,会触发浏览器中的默认事件(切换选中下一个元素目标)

这时你在抬起tab键,那么原本的元素不会监听到,因为你当前已经选中了其他元素,那么监听到tab键抬起事件的对象也变了

而使用keydown进行绑定tab键响应,便不会有问题,因为当你按下tab键的那一刻,浏览器默认事件被触发,但是当前元素也监听到了,他们会同步调用,异步执行

keyup与keydown(详解)相关推荐

  1. KeyDown,KeyPress和KeyUp详解

    KeyDown,KeyPress和KeyUp详解 Windows窗体通过引发键盘事件来处理键盘输入以响应Windows消息,大多数Windows窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入. ...

  2. js keyup、keypress和keydown事件 详解

    js keyup.keypress和keydown事件  详解 js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏 ...

  3. php keydown,JQuery中keyUp和keyDown的区别详解

    这篇文章主要是对JQuery中keyUp与keyDown的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 定义和用法完整的 key press 过程分为两个部分:1. 按键被按 ...

  4. WebDriver自动化测试框架详解

    webDriver自动化测试框架详解 一. 简介 WebDriver API相对于Selenium Remote Control API来说,虽然同样是控制浏览器,但它的编程接口更加简洁 WebDri ...

  5. bootstrap表格遍历_BootStrap实现带有增删改查功能的表格(DEMO详解)

    前言 bootstrap的表格样式,有类似EasyUI的表格,也有卡片式表格,放到移动端显示,各有千秋.但是BootStrap自带的表格是没有操作列的,网上的资源不少,但是都是比较单一.零碎,JS.C ...

  6. 【jQuery笔记Part4】03-事件详解

    事件详解 display:inline-block 事件冒泡 阻止事件冒泡 常用事件 事件常用属性 事件监听方法 示例页面: on() 绑定事件 绑定单个事件 绑定多个事件->同一回调函数 绑定 ...

  7. JavaWeb = jQuery使用详解

    jQuery 是一个优秀的 javascript 的轻量级框架之一,封装了 dom 操作.事件.页面动画.异步操作等功能. 特别值得一提的是基于 jquery 的插件非常丰富,大多数前端业务场景都有其 ...

  8. Pygame详解(七):key 模块

    pygame.key 与键盘相关的 Pygame 模块. 函数 pygame.key.get_focused()  -  当窗口获得键盘的输入焦点时返回 True pygame.key.get_pre ...

  9. bootstrap 获取表格修改的结果_BootStrap实现带有增删改查功能的表格(DEMO详解)

    前言 bootstrap的表格样式,有类似EasyUI的表格,也有卡片式表格,放到移动端显示,各有千秋.但是BootStrap自带的表格是没有操作列的,网上的资源不少,但是都是比较单一.零碎,JS.C ...

最新文章

  1. python数组和列表_Python-01矩阵、数组和列表等的总结
  2. Java 应用中的日志
  3. Android 安全提示 笔记
  4. 关于高考报志愿的一些规划建议
  5. C语言填空题10道,3道C语言填空题,谁帮忙做下,谢谢
  6. Maven父子结构的项目依赖使用以及打包依赖_微服务项目(maven父子级项目)怎么打包
  7. 张鹏 html 笔记,传智 张鹏 html+css 课程 笔记2(吐血整理)
  8. 获取两个时间之间的间隔_花了两天,终于把 Python 的时间转化给整明白了(超多图解)...
  9. 对团队成员公开感谢博客
  10. 计算机组成原理—DRAM的刷新
  11. Win10装Ubuntu双系统步骤做法
  12. 深入理解Java动态代理及手动实现
  13. 如何做伪原创视频 视频md5修改器吾爱
  14. linux tar压缩文件命令,tar打包压缩文件命令
  15. 动态规划(DP)算法初识
  16. 深度学习模型部署学习一
  17. 美国如果把根域名服务器封了,中国会从网络上消失?
  18. STM32翻转LED(HAL库)
  19. kesioncms ajax分页,kesion CMS 新闻添加(分页分标题)和管理
  20. 10款常见的Webshell检测工具

热门文章

  1. 哈利波特魔法觉醒冬青心愿怎么玩
  2. 几个经典的冷笑话……
  3. 智慧海港综合管理系统解决方案
  4. c# winform LED数字时钟控件
  5. linux 查看CPU频率
  6. OpenTSDB之HTTP请求接口、Java开发
  7. [转]IA64与X86-64的区别
  8. C语言编程——段错误
  9. BERT-BiLSTM-CRF-NER模型源码测试
  10. Hanoi塔问题的递归算法与非递归算法