Un1*_*Un1 3 vue.js vuejs2 vuetify.js
我正在尝试将文本字段集中在ALT+C快捷方式上(在我的 Electron-Vue 应用程序中):
代码笔: https ://codepen.io/anon/pen/aqrBzq ? editors = 1010
codepen 使用了这个 v-text-field自定义组件,正如Github 上的这个评论所说,该方法应该被包裹起来$nextTick以聚焦这个组件
<v-text-field
ref="filter"
@keyup.alt.67="focusFilter"
label="type here" >
</v-text-field>
...
methods: {
focusFilter(event){
this.$nextTick(event.target.focus)
}
}
Run Code Online (Sandbox Code Playgroud)
我也在下面尝试了这段代码,试图用一个按钮聚焦它,它可以工作,但我想让它使用一个快捷键(例如ALT+C但更优选CTRL+ F,但为了举例,我不使用保留的快捷方式)
<v-btn @click="focusFilter()">focus</v-btn>
...
methods: {
focusFilter(event){
this.$nextTick(this.$refs.filter.focus)
}
}
Run Code Online (Sandbox Code Playgroud)
当您在组件上侦听本机事件时,您需要使用.native修饰符。
所以改用这个:
@keyup.native.alt.67="focusFilter"
Run Code Online (Sandbox Code Playgroud)
详情请见:https : //vuejs.org/v2/guide/components.html#Binding-Native-Events-to-Components
如果您想在alt+c按下时聚焦此输入并且聚焦任何内容,则需要将事件处理程序添加到windowfor keyup。
我已经创建了一种方法来在正确的情况下关注它,例如:
methods: {
listenForFocusFilterShortcut (event) {
if (event.keyCode === 67 && event.altKey) {
this.$refs.filter.focus()
}
},
}
Run Code Online (Sandbox Code Playgroud)
然后,添加一个创建的钩子,并在有keyup事件时将此回调附加到窗口。
created () {
window.addEventListener(
'keyup',
this.listenForFocusFilterShortcut
)
},
Run Code Online (Sandbox Code Playgroud)
然后,在移除组件时移除事件侦听器:
destroyed () {
window.removeEventListener(
'keyup',
this.listenForFocusFilterShortcut
)
}
Run Code Online (Sandbox Code Playgroud)