有一个<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');
},
}
});
让我们首先建立一些基础知识,以便我们可以解决您的问题:
建立HTML本机事件基础知识
onpaste
事件通常由用户通过以下两种方式之一触发:
CTRL + V
按钮(keydown
+ keyup
每个按下的按钮都会触发HTML事件contextmenu
HTML事件)Vue.js
Vue.js内置了事件侦听器,您可以侦听任何本机HTML事件。如果您只想听onpaste
HTML事件,则只需要像上面一样用@paste
听此事件。
动机不清
尝试修改浏览器的本机行为,即只要您尝试使用浏览器的本机HTML API,paste
事件就不会由keydown
/keyup
/ contextmenu
事件组成,这是不可能的。如果您选择构建自己的自定义逻辑进行粘贴并阻止由您决定的默认值,但老实说,我确实不明白您这样做的动机是什么,因为浏览器的本地HTML事件恰好满足了他们的需要到。
我相信您需要问自己的主要问题是您要完成什么?您目前正在尝试解决的预期行为或挑战是什么。通过澄清这一点,您可能会问另一个问题,并获得更准确的答案,这可以帮助您进行当前的工作。祝你好运。