抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

v-on的按键修饰符

Vue 内置的按键修饰符

通俗一点讲,指的是:监听键盘输入的事件。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符。如下:

Vue内置的按键修饰符:

1
2
3
4
5
6
7
8
9
10
.enter
.tab
.delete (捕获 “删除” 和 “退格” 键)
.esc
.space
.up
.down
.left
.right
1.0.8+版本:支持单字母的按键别名。

比如说,keyup指的是:键盘(任何键位)抬起时的监听事件。.enter指的是:按enter键的按键修饰符。我们把这两个结合起来看看。

@keyup.enter举例:按enter键后的监听事件

@keyup.enter="addData"表示:按住enter键后,执行addData()方法。全称v-on:key.enter="addData"

我们还是拿01-04这篇文章中的列表功能来举例。之前是点击“添加”按钮后,列表中会添加一个item。现在要求:在输入框中按enter键后,也能添加一个item。

核心代码如下:

1
<input type="text" v-model="formData.name" @keyup.enter="addData">

注意,如果写成@keyup="addData",效果却是:只要键盘的任何键位打了字(还没来得及按enter键),就会执行addData()方法,这种效果显然不是我们想要的。所以要加上修饰符.enter,表示只针对enter键。

自定义的按键修饰符

如果我们直接在代码的<input>标签里写@keyup.f2="addData",那么,按住「F2键」后,是没有效果的,因为「F2键」不是内置的按键修饰符(如果F2不能验证,你可以试一下F7)。

我们知道,每个按键都有一个键盘码。参考链接:

通过查阅,我们知道了「F2键」的键盘码为113,那代码可以这样写:(按住F2键后,执行 addData 方法)

1
<input type="text" v-model="formData.name" @keyup.113="addData">

虽然键盘码很全,但是不好记呀。于是,接下来,我们给键盘码定义别名。

自定义全局按键修饰符

1
2
//自定义全局按键修饰符
Vue.config.keyCodes.f2 = 113;

上方代码的书写位置,与自定义全局过滤器的位置,是并列的。

然后,我们就可以使用键盘码的别名了。

自定义全局指令

自定义全局指令的举例1

举例1:让指定文本框自动获取焦点

如果我们想实现这个例子,原生js的写法是:

1
2
//原生js写法:网页一打开,就让指定的输入框自动获取焦点
document.getElementById('search').focus()

代码的位置:

但我们不建议这样做。