Vue中快捷键和el-input输入框的结合使用

1,036 阅读1分钟

需求:快捷键实现el-input弹框中自动填入数据

思路:鼠标光标没有聚焦到input输入框中使用keymaster插件,光标聚焦到input输入框中keymaster无效,需要使用@keyup.native来监听按键

使用keymaster插件和@keyup.native来监听键盘事件

npm install keymaster --save
  • keymaster插件使用起来很方便,keymaster监听按键后,改变输入框数据,并且调用focus方法使光标聚焦到输入框内,需要注意的是,这里的focus方法是原生input输入框的方法。

  • 由于鼠标光标聚焦在输入框内,keymaster无效,因此使用@keyup.native在el-input上添加键盘事件

<template>
    <div>
    <el-input v-model="input"
              ref="searchInput"
              @keyup.native="changeInput"
              placeholder="请输入"></el-input>
  </div>
</template>

<script type="text/ecmascript-6">
import keymaster from 'keymaster'
export default {
  data () {
    return {
      input: ''
    }
  },
  
  mounted () {
    keymaster('alt+f1', () => {
      this.input = '测试数据'
      this.$refs.searchInput.$el.children[0].focus()
    })
  },
  
  methods: {
    changeInput (event) {
      if (event.keyCode == 112 && event.altKey) {
        this.input = '测试数据'
        this.$refs.searchInput.$el.children[0].focus()
      }
    }
  }
}
</script>
  • 注:keycode指的是js键盘按钮keyCode,下面为简记表 数字值 | 实际键值 | | ------- | --------------- | | 48到57 | 0到9 | | 65到90 | a到z(A到Z) | | 112到135 | F1到F24 | | 8 | BackSpace(退格) | | 9 | Tab | | 13 | Enter(回车) | | 20 | Caps_Lock(大写锁定) | | 32 | Space(空格键) | | 37 | Left(左箭头) | | 38 | Up(上箭头) | | 39 | Right(右箭头) | | 40 | Down(下箭头)