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 相关文章推荐
拖动Html元素集合 Drag and Drop any item
Dec 22 Javascript
Javascript学习笔记9 prototype封装继承
Jan 11 Javascript
Javascript 判断客户端浏览器类型代码
Mar 01 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
Node.js实用代码段之正确拼接Buffer
Mar 17 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
js代码编写无缝轮播图
Sep 13 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
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
MSN消息提示类
2006/09/05 Javascript
对联广告js flash激活
2006/10/19 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
怎样写留学自荐信
2013/11/11 职场文书
大学生实习思想汇报
2014/01/12 职场文书
试用期员工考核制度
2014/01/22 职场文书
政治学求职信
2014/06/03 职场文书
平安家庭事迹材料
2014/12/20 职场文书
长征观后感
2015/06/09 职场文书
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS