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+vant实现购物车全选和反选功能
Nov 17 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
PHP音乐采集(部分代码)
2007/02/14 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python动态监控日志内容的示例
2014/02/16 Python
Python中的rjust()方法使用详解
2015/05/19 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
解决Python使用列表副本的问题
2019/12/19 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python中return函数返回值实例用法
2020/11/19 Python
java关于string最常出现的面试题整理
2021/01/18 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
学生打架检讨书大全
2014/01/23 职场文书
党员承诺书格式范文
2015/04/28 职场文书
大学生读书笔记大全
2015/07/01 职场文书
关于运动会的广播稿
2015/08/19 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
解析python中的jsonpath 提取器
2022/01/18 Python