vue监听键盘事件的相关总结


Posted in Vue.js onJanuary 29, 2021

按键修饰符

在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">

你可以直接将 KeyboardEvent.key 暴露的任意有效按键名转换为 kebab-case 来作为修饰符。

<input v-on:keyup.page-down="onPageDown">

为了在必要的情况下支持旧浏览器,Vue 提供了绝大多数常用的按键码的别名:

  • - enter 
  • - tab 
  • - delete (捕获“删除”和“退格”键) 
  • - esc 
  • - space 
  • - up 
  • - down 
  • - left 
  • - right

你还可以通过全局 config.keyCodes 对象自定义按键修饰符别名: 

// 可以使用 `v-on:keyup.f1`
Vue.config.keyCodes.f1 = 112

系统修饰键

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。 

  • - .ctrl 
  • - .alt 
  • - .shift 
  • - .meta

Do something
与按键别名不同的是,修饰键和 keyup 事件一起用时,事件引发时必须按下正常的按键。换一种说法:如果要引发 keyup.ctrl,必须按下 ctrl 时释放其他的按键;单单释放 ctrl 不会引发事件。

<!-- 按下Alt + 释放C触发 -->
<input @keyup.alt.67="clear">
 
<!-- 按下Alt + 释放任意键触发 -->
<input @keyup.alt="other"><!-- 按下Ctrl + enter时触发 --><input @keydown.ctrl.13="submit">

对于elementUI的input,我们需要在后面加上.native, 因为elementUI对input进行了封装,原生的事件不起作用。

<input v-model="form.name" placeholder="昵称" @keyup.enter="submit">

<el-input v-model="form.name" placeholder="昵称" @keyup.enter.native="submit"></el-input>

.exact修饰符

.exact 修饰符允许你控制由精确的系统修饰符组合触发的事件。 

<!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
<button v-on:click.ctrl="onClick">A</button>

<!-- 有且只有 Ctrl 被按下的时候才触发 -->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>

<!-- 没有任何系统修饰符被按下的时候才触发 -->
<button v-on:click.exact="onClick">A</button>

鼠标按钮修饰符

  • .left 
  • .right 
  • .middle

这些修饰符会限制处理函数仅响应特定的鼠标按钮。 

系统按键组合

如果我们要监听全局的按键操作方法,显然,将其绑定在页面元素上是不行的。

我们可在mounted里面监听:

mounted() {
  document.onkeydown = function (event) {
    let key = window.event.keyCode;
    if (key === 65 && event.ctrlKey) { 
      // 监听ctrl+A组合键      
      window.event.preventDefault(); //关闭浏览器默认快捷键      
      console.log('crtl+ a组合键')    
    } else if(key === 83 && event.ctrlKey) {       
      window.event.preventDefault(); //关闭浏览器快捷键
      console.log('保存');
    }
  }
}

从以上例子可以看出,shift、Control、Alt 在JS中也可用“window.event.shiftKey”、“window.event.ctrlKey”、“window.event.altKey” 代替。

附录-键盘按钮keyCode表

vue监听键盘事件的相关总结

vue监听键盘事件的相关总结

以上就是vue监听键盘事件的相关总结的详细内容,更多关于vue监听键盘事件的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
springboot+vue实现文件上传下载
Nov 17 Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
vue3.0中使用element的完整步骤
Mar 04 Vue.js
Vue详细的入门笔记
May 10 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
Vue3中的Refs和Ref详情
Nov 11 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 #Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 #Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 #Vue.js
聊聊vue 中的v-on参数问题
Jan 29 #Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 #Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 #Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 #Vue.js
You might like
当海贼王变成JOJO风
2020/03/02 日漫
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
Python编程argparse入门浅析
2018/02/07 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Python实现壁纸下载与轮换
2020/10/19 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
ASP.NET Core中的配置详解
2021/02/05 Python
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS