【发布时间】:2018-01-09 23:49:36
【问题描述】:
我知道我可以在 vue.js 中监听关键事件,并为这些事件添加修饰符,例如 keyup.enter。但我似乎找不到 @ 键的修饰符,例如 keyup.AT 或 keyup.at 等。
有没有办法在 vue.js2 中监视这个关键事件?
谢谢,
【问题讨论】:
标签: javascript vue.js vuejs2
我知道我可以在 vue.js 中监听关键事件,并为这些事件添加修饰符,例如 keyup.enter。但我似乎找不到 @ 键的修饰符,例如 keyup.AT 或 keyup.at 等。
有没有办法在 vue.js2 中监视这个关键事件?
谢谢,
【问题讨论】:
标签: javascript vue.js vuejs2
您可以使用@keyup.shift.50 捕获在非移动 QWERTY 和 DVORAK 键盘上同时按下了 ⇧ 和 2 键。我不确定外国键盘。
console.clear()
new Vue({
el: "#app",
data:{
log:[]
},
methods:{
onAt(evt){
this.log.push("@ pressed")
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
<input type="text" @keyup.shift.50="onAt">
<hr>
<div v-for="msg in log">{{msg}}</div>
</div>
但是,对于 @ 键具有专用按钮的移动键盘,此解决方案不会触发。我认为没有办法在 Vue 中使用事件修饰符来处理它,因此您必须求助于处理 keyup 事件并检查事件对象。
console.clear()
new Vue({
el: "#app",
data:{
log:[]
},
methods:{
onKeyUp(evt){
if ("@" === evt.key)
this.log.push("@ pressed")
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
<input type="text" @keyup="onKeyUp">
<hr>
<div v-for="msg in log">{{msg}}</div>
</div>
【讨论】: