在监听键盘事件时,我们经常需要检查详细的按键,即你按了那个具体的键,如:Ctrl 键、Alt 键等等。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符,例如:
<!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` --> <input v-on:keyup.enter="submit">
你可以直接将 KeyboardEvent.key 暴露的任意有效按键名转换为 kebab-case(称串式命名方式,又称破折号方式 dash-case,每个单词全小写或全大写,多单词使用中划线隔开)来作为修饰符。例如:
<input v-on:keyup.page-down="onPageDown">
在上述示例中,处理函数只会在 $event.key 等于 PageDown 时被调用。
注意:keyCode 的事件用法已经被废弃了并可能不会被最新的浏览器支持。
在 Vue.js 中,使用 keyCode 属性也是允许的,例如:
<!-- 13 表示回车键 --> <input v-on:keyup.13="submit">
为了在必要的情况下支持旧浏览器,Vue 提供了绝大多数常用的按键码的别名:
.enter 捕获 “回车” 键
.tab 捕获 “TAB” 键
.delete 捕获 “删除” 和 “退格” 键
.esc 捕获 “Esc” 键
.space 捕获 “空格” 键
.up 捕获 “向上” 键
.down 捕获 “向下” 键
.left 捕获 “向左” 键
.right 捕获 “向右” 键
有一些按键 (.esc 以及所有的方向键) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,这些内置的别名应该是首选。
你还可以通过全局 config.keyCodes 对象自定义按键修饰符别名,例如:
// 可以使用 `v-on:keyup.f1` Vue.config.keyCodes.f1 = 112
该示例要求用户在输入框中输入消息,当按回车键时,触发 submit 方法,显示 message 内容。代码如下:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue</title>
<!-- 使用 CDN 引入 Vue 库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 按回车键时,显示 message -->
Message:
<input type="text" v-model="message" v-on:keyup.enter="submit" />
</div>
<script type="text/javascript">
var app = new Vue({
el: "#app",
data: {
message: ""
},
methods: {
submit: function(){
alert(this.message);
}
}
});
</script>
</body>
</html>运行效果图:
