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 Elenent实现表格相同数据列合并
Nov 30 Vue.js
vue实现登录功能
Dec 31 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 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调用数据库的存贮过程
2006/10/09 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php实现mysql封装类示例
2014/05/07 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
flexigrid 参数说明
2010/11/23 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
大学毕业后的十年规划
2014/01/07 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
超市开学活动方案
2014/03/01 职场文书
爱情寄语大全
2014/04/09 职场文书
教师节获奖感言
2015/07/31 职场文书
Python turtle编写简单的球类小游戏
2022/03/31 Python