Vue 按键修饰符处理事件的方法


Posted in Javascript onMay 04, 2018

按键修饰符

在 PC 端开发时, 我们常常会遇到类似的需求, 比如用户按下 enter 键时提交表单, 没有用按键修饰符时, 我们可能会去监听键盘事件, 根据 keyCode 的值加以判断

Vue 新增按键修饰符和系统修饰符来处理类似事件

/** 提交表单 */
<template>
  <div class="demo">
    电话号码:
    <input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.13="handleSubmit" />
  </div>
</template>

<script>
export default {
  data () {
    return {
      phone: '' // 电话号码
    }
  },
  methods: {

    // TODO 提交电话号码
    handleSubmit () { alert(this.phone) }
  }
}
</script>

要记住所有的 keyCode 值比较困难, 所以 Vue 为常用的按键提供了别名

<input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.enter="handleSubmit" />

常见按钮别名

enter tab delete esc space up down left right

如果这些别名不能满足需要的话, 可以通过全局 config.keyCodes 对象自定义按键修饰符别名

Vue.config.keyCodes.x = 88

你也可以将 keyboardEvent.key 暴露的按键名转换为 kebab-case 来作为修饰符, 以下两种修饰符都能触发 handleSubmit 事件

<input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.right="handleSubmit" />
<input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.arrow-right="handleSubmit" />

系统修饰键

有时候我们需要配合系统修饰键共同触发事件, 这里要注意的是, 单独按下系统修饰键是不会触发相应事件的

系统修饰键包含 ctrl alt shift meta 键, 对于不同的键盘, 这四个系统修饰键对应各有不同, 对于 mac 系统键盘, meta 键对应 command 键, 在 windows 系统键盘中对应 ⊞ 键

在下面的例子中, 当 control 和 v 键共同作用时, 才会触发 handleSubmit 事件

<input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.ctrl.v="handleSubmit"/>

有时候我们需要精确匹配到按键组合时才触发相应事件, 在下面的例子中, 当且仅当 control 和 v 键共同作用时, 才会触发 handleSubmit 事件

<input type="text" placeholder="请输入电话号码" v-model="phone" @keyup.ctrl.v.exact="handleSubmit"/>

总结

以上所述是小编给大家介绍的Vue 按键修饰符处理事件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
jQuery 获取浏览器所在的IP地址的小例子
Nov 08 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
JS获取屏幕高度的简单实现代码
May 24 Javascript
AngularJs基本特性解析(一)
Jul 21 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
jQuery加密密码到cookie的实现代码
Apr 18 jQuery
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
详解vue 图片上传功能
Apr 30 Javascript
vue mint-ui tabbar变组件使用
May 04 #Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 #Javascript
原生javascript AJAX 三级联动的实现代码
May 04 #Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 #Javascript
vue裁切预览组件功能的实现步骤
May 04 #Javascript
详解vue组件基础
May 04 #Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 #Javascript
You might like
Terran魔法科技
2020/03/14 星际争霸
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
jquery操作select大全
2014/04/25 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python实现媒体播放器功能
2018/02/11 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
秦兵马俑导游词
2015/02/02 职场文书
小组组名及励志口号
2015/12/24 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
python开发人人对战的五子棋小游戏
2022/05/02 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android