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中如何添加百度统计代码
Dec 19 Vue.js
Vue实现小购物车功能
Dec 21 Vue.js
详解Vue的异步更新实现原理
Dec 22 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 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
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python画折线图的程序
2018/07/26 Python
Python for循环及基础用法详解
2019/11/08 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
超市中秋节活动方案
2014/02/12 职场文书
班级安全教育实施方案
2014/02/23 职场文书
质量主管工作职责
2014/09/26 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python