VueJS - 如何检测 Ctrl V?

新手上路,请多包涵

我已经看到了 这个问题 的答案,但这不是我需要的解决方案,因为它是针对 jQuery 的,而我需要一些针对 vue.js 的东西。

到目前为止,我能够使用 ff 检测单个字符的按下。代码:

 export default {
  name: 'game',

  data () {
    return {
      allowInput: false,
      disabledKeys: ['ArrowLeft', 'Home', 'Control']
    }
  },

  methods: {
    keymonitor: function (event) {
      console.log(event.key)

      if (this.disabledKeys.indexOf(event.key) >= 0) {
        event.preventDefault()
        this.allowInput = false
        // alert('not allowed')
      } else {
        this.allowInput = true
      }
    },

    checkAnswer () {
      if (! this.allowInput) {
        alert('the key(s) you pressed is/are not allowed')
      }
    } /* END checkAnswer */
  } /* END methods */
} /* END export default */
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.2/vue.min.js"></script>

<input id="typeBox" ref="typeBox" autocomplete="off" placeholder="Type here..."
       @keydown="keymonitor" @keyup="checkAnswer()" />

上面的代码成功地阻止了文本框接受 ArrowLeftHomeControl 按键。

问题:

我想弄清楚如何检测 Ctrl + V ,因为我想防止在我的文本框中进行粘贴操作。有谁知道如何做到这一点?提前致谢。

原文由 ITWitch 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 565
2 个回答

为了检测两个键,Vue 提供了 修饰键,例如检测 Alt + C ,你可以简单地做:

 <input @keyup.alt.67="YourFn">

同样对于 Ctrl + V ,您可以执行以下操作:

 <input @keyup.ctrl.76="YourFn">

正如我 在这里 看到的, Ctrl + v 的 ASCII 码是 22,所以你应该能够做到:

 <input @keyup.22="YourFn">

原文由 Saurabh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题