Vue - 按键修饰符 && 系统修饰符
本文简述了Vue中的按键修饰符
引入样例
- 在生活中,常常有这样的场景:按下
Enter
提交,或者按下Esc
退出全屏等等,这些都是与键盘有关的操作 - 同理,我们在Vue中,也可以通过在
v-on
添加按键修饰符
将某个按键映射到对应的事件上,用于监听按键事件 - 举栗引入:
<div id="app"> 序号:<input type="text" v-model="idValue" /> 车名:<input type="text" v-model="nameValue" @keyup.enter="add"> <p v-for="item in list"> 序号:{{item.id}} 车名:{{item.name}} </p> </div> <script type="text/javascript"> var app = new Vue({ el: '#app', data: { idValue: '', nameValue: '', list: [ {id:1,name:'奥迪'}, {id:2,name:'奔驰'}, ] }, methods: { add(){ this.list.unshift({ id: this.idValue, name : this.nameValue }) } } }) </script>
- 那么,结果就是,我们输入
id
与name
,按下Enter
,即可将输入的内容添加到list
中并通过v-for
显示出来
- 那么,结果就是,我们输入
- 我们详细分析一下刚才的流程:
- 我们在第二个
<input>
框里面添加了keyup
事件,即键盘按下抬起时触发 - 后面的
.enter
即为按键修饰符,定义哪个按键会触发该事件(这里是回车触发) - 触发的事件反映在
add()
方法上,即回车就触发add()
方法
- 我们在第二个
按键修饰符别名
- 其实,除了
.enter
以外,Vue还定义了许多按键修饰符,列举如下:.enter
回车键.tab
tab键.delete
删除(或退格)键.esc
Esc键.space
空格键.up
↑键down
↓键left
←键right
→键
- 其实,你还可以通过全局
config.keyCodes
对象,来实现:自定义键盘修饰符别名 - 注:不管是使用键盘名称还是使用键盘码都要防止快捷键的冲突,快捷键冲突的时候会不起作用。
关于按键码
- 在之前,我们不仅可以使用按键修饰符别名,还可以使用
按键码
来作为修饰符使用:- 比如
f2
的按键码为113
,那么我们可以通过@keyup.113="..."
来使用该按键修饰符
- 比如
- 但是在官方文档中,已经明确提到:
keyCode
的事件用法已经被废弃了并可能不会被最新的浏览器支持 - 所以,建议的是使用按键修饰符别名...
系统修饰符
- 仅在按下相应按键时才触发鼠标或键盘事件的监听器,简单地说就是,配合其他按键才能使用
- 其修饰符有:
.ctrl
.alt
.shift
.meta
-
例如:
<!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="...">...</div>
.exact
修饰符.exact
修饰符允许你控制由精确的系统修饰符组合触发的事件<!-- Alt 或 Shift 被一同按下时也会触发 --> <button @click.ctrl="onClick">A</button> <!-- 有且只有 Ctrl 被按下的时候才触发 --> <button @click.ctrl.exact="onCtrlClick">A</button> <!-- 没有任何系统修饰符被按下的时候才触发 --> <button @click.exact="onClick">A</button>
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: