是否有可能仅检测到onkeyup和onpaste之间的一个事件?

问题描述 投票:0回答:1

有一个<input>元素。我添加了作为Vue指令的处理程序来侦听keyup和粘贴事件,例如@keyup and @paste。粘贴内容时,我只需要onPaste事件检测。但是两个都被检测到了。是否可以仅检测粘贴事件?和如何?

<div id="app">
  <input type="text" @keyup="keyup" @paste="onPaste">
</div>
new Vue({
  el:'#app',
  methods: {
    onPaste: function () {
        console.log('paste');
    },
    keyup: function () {
        console.log('keyup');
    },
  }
});
javascript vue.js javascript-events
1个回答
0
投票

让我们首先建立一些基础知识,以便我们可以解决您的问题:

建立HTML本机事件基础知识

onpaste事件通常由用户通过以下两种方式之一触发:

  1. 用户按下CTRL + V按钮(keydown + keyup每个按下的按钮都会触发HTML事件
  2. 右键单击以打开浏览器上下文菜单,然后选择选项将其粘贴到输入中(触发contextmenu HTML事件)

Vue.js

Vue.js内置了事件侦听器,您可以侦听任何本机HTML事件。如果您只想听onpaste HTML事件,则只需要像上面一样用@paste听此事件。

动机不清

尝试修改浏览器的本机行为,即只要您尝试使用浏览器的本机HTML API,paste事件就不会由keydown /keyup/ contextmenu事件组成,这是不可能的。如果您选择构建自己的自定义逻辑进行粘贴并阻止由您决定的默认值,但老实说,我确实不明白您这样做的动机是什么,因为浏览器的本地HTML事件恰好满足了他们的需要到。

我相信您需要问自己的主要问题是您要完成什么?您目前正在尝试解决的预期行为或挑战是什么。通过澄清这一点,您可能会问另一个问题,并获得更准确的答案,这可以帮助您进行当前的工作。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.