按键修饰符

65 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情

在某些实际场景中,可能需要设定各种按键事件去优化页面的交互,接下来学习在vue中监听键盘事件的方法。 比如在这种场景中,用户输入账号密码后按【Enter】键就可以登录。在传统的前端开发中,这种类似的需求,需要知道按键所对应的keyCode,然后通过keyCode得知用户按了哪个按键,转而去执行后续的操作。

获取按键的keyCode

要想获取按键的keyCode,可以通过v-model指令进行数据双向绑定,并同时绑定一个keydown事件,在keydown事件中输入keyCode。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 测试实例</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
    <input type="text" v-model="msg" v-on:keydown="keydown"></input>
</div>

<script>
    var vm=new Vue({
        el:"#app",
        data:{
            msg:"0123456789"
        },
        methods: {
            keydown:function(e){
                console.log(e.keyCode)
            }
        }
    })
</script>
</body>
</html>

image.png 测试可知,0~9键的keyCode是96-105.此外,Enter键的keyCode是13,空格键的keyCode是32.

监听按键事件

在vue中,提供了一种便利的方式来实现监听按键事件。在监听按键事件时,经常需要查找常见的按键所对应的keyCode。


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 测试实例</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
    <div>在文本框中不断输入字符,当按Enter键时显示前面已输入的字符,同时清空文本框</div>
    {{msg}}
    <input type="text" v-model="msg" v-on:keydown.13="keydown"></input>
</div>

<script>
    var vm=new Vue({
        el:"#app",
        data:{
            msg:""
        },
        methods: {
            keydown:function(e){
                console.log(e.keyCode)
            }
        }
    })
</script>
</body>
</html>

上面代码中使用了v-on:keydown.13,13表示Enter键的keyCode。vue为常用的按键提供了别名,常见别名如下表:

别名
.enter捕获【Enter】键
.tab捕获【Tab】键
.delete捕获【Delete】键 和【Backspace】键
.esc捕获【Esc】键
.space捕获空格键