文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详解Vue的键盘事件

2024-04-02 19:55

关注

在js中我们要获取一个按键的编码通常需要通过(keydown/keyup)去绑定一个事件,再通过默认参数event中的keyCode属性去取得编码。如果我们要实现按固定的键才能触发事件时就需要在事件中进行不断的判断,这样会显的很麻烦,如

var input = document.querySelector('input')
    input.onkeyup = function (e) {
        if (e.keyCode == 13)
            console.log('我是回车键')
    }

在vue中就为我们一些常用的按键提供了别名,并且只需要我们在事件后加上相应别名即可,不需要我们手动的在事件中进行判断。

常用按键别名

Vue中为一些常用的按键绑定了别名,分别有以下几种。

别名可用来限制键盘事件(keydown、keyup),只有按下键的是与别名一致时才会去执行所绑定的事件

<input v-on:keyup.enter="showtip" type="text">
只有按下回车键时才会执行showtip方法

另外,tab键只适合与keydown一起使用,在浏览器中tab本身就已经绑定了事件:切换焦点,所以在按下放开tab键后就会触动默认的事件,而忽视了keyup所绑定的事件。而使用keydown就能避过这一情况,在tab按下的那一瞬间便会执行所绑定的事件。

未提供别名的键

另外,在vue中未提供别名的按键,vue也为我们提供了一种方法去使用。vue中规定未提供别名的按键,可使用按键原始的key值去绑定,所谓key值就是由event.key获得的值。如

var input = document.querySelector('input')
    input.onkeyup = function (e) {
       console.log(e.key)
       }

以上代码在我们按下任意一键时在控制台就会输出对应的key值,分别按下大小写切换键、Q以及W键会得到以下值

我们就可以使用key值作为按键的别名,特别要注意的是如果key值是单个字母或单词直接使用key值就可以了,但是如果由多个单词组成如大小写切换键就为两个单词的结合,这个时候就要把key值进行改动,使用短横线命名法则将CapsLock-->caps-lock就可以使用了

<input v-on:keyup.Q="showtip" type="text">
//只有按下q键时才会执行showtip方法
<input v-on:keyup.caps-lock="showtips" type="text">
//只有按下capslock键时才会执行showtips方法

系统修饰键

所谓系统修饰键就是ctrl、alt、shift等。这些键的使用比较来说有点复杂,主要分为以下两种情况

1.当触发事件为keyup时,按下修饰键的同时要按下其他键,再释放其他键,事件才能被触发。

<input v-on:keyup.Alt="showtips" type="text">
//按下alt键后再按任意一键,然后再释放任意键后便会执行showtips方法
//以上的步骤太过麻烦我们可以这样写
<input v-on:keyup.Alt.y="showtips" type="text">
//当按alt y时就会触发事件而不用先按alt再按y再放y

当触发事件为keydown时,直接按下修饰键。

<input v-on:keydown.Alt="showtips" type="text">
//只有按下alt键时才会执行showtips方法

自定义按键别名

vue中为我们提供了自定义按键别名的方法,通过(Vue.config.keyCodes.自定义键名=键码)的方式去定义

<input v-on:keydown.en="showtips" type="text">
//只有按下回车键时才会执行showtips方法
Vue.config.keyCodes.en=13
//13是回车键的键码,将他的别名定义为en

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯