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中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
Vue实现图书管理小案例
Dec 03 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
Vue实现简单购物车功能
Dec 13 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue实现登录功能
Dec 31 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
Vue全家桶入门基础教程
May 14 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 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
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
YII框架http缓存操作示例
2019/04/29 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
jQuery焦点图左右转换效果
2016/12/12 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
Python 字符串操作方法大全
2014/03/11 Python
python处理PHP数组文本文件实例
2014/09/18 Python
python的keyword模块用法实例分析
2015/06/30 Python
python黑魔法之编码转换
2016/01/25 Python
Python异常处理操作实例详解
2018/08/28 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
盛大笔试题
2016/11/05 面试题
校园奶茶店创业计划书
2014/01/23 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
超市督导岗位职责
2015/04/10 职场文书
行为习惯主题班会
2015/08/14 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
python高温预警数据获取实例
2022/07/23 Python