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 相关文章推荐
FireFox JavaScript全局Event对象
Jun 14 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
js常用DOM方法详解
Feb 04 Javascript
简单实现js选项卡切换效果
Feb 09 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
微信小程序form表单组件示例代码
Jul 15 Javascript
JS实现放大镜效果
Sep 21 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
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
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
深入浅析Python传值与传址
2018/07/10 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
python map比for循环快在哪
2020/09/21 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
商场消防演习方案
2014/02/12 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
2014年物流工作总结
2014/11/25 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL