我需要在将某些内容粘贴到vue.js应用程序中的文本区域时调用函数。在这种情况下,我应该在哪个事件中调用我的函数?
答案 0 :(得分:10)
您只需使用paste
事件:
<textarea @paste="onPaste"></textarea>
...
methods: {
onPaste (evt) {
console.log('on paste', evt)
}
}
...
这不是特定于vue的事件。见https://developer.mozilla.org/en-US/docs/Web/Events/paste
答案 1 :(得分:7)
在Vue 2.6中使用onPaste
方法,evt.target.value
为空。要获取文本值,请使用:
methods: {
onPaste (evt) {
console.log('on paste', evt.clipboardData.getData('text'))
}
}
答案 2 :(得分:2)
此外,您还可以使用 .prevent 功能禁用输入的过去事件(CTRL + V)。
<input v-model="input" @paste.prevent class="input" type="text">
此输入的过去动作将自动被禁用
答案 3 :(得分:0)
onPaste方法需要返回true才能实际粘贴文本。
使用@CodinCat上面的例子,并更新它。
<textarea @paste="onPaste"></textarea>
...
methods: {
onPaste (evt) {
console.log('on paste', evt)
return true;
}
}
...
答案 4 :(得分:0)
它已经完成并包装到watch
功能中,并且还可以处理“剪切”事件(使用鼠标)和键盘键。
您所需要做的就是像这样将观察者设置为您的媒体资源
data: {
coupon_code: '',
},
watch: {
coupon_code: function(){
console.log('watch-'+this.coupon_code);
},
},
和HTML
<input type="text" autocomplete='off' v-model="coupon_code" >
答案 5 :(得分:0)
我在这里看到了很多不同的答案,其中许多我会在同行代码审查期间标记。
用于补偿粘贴(包括键盘快捷键)的最短代码量是:
<textarea **@input**="doSomething" />.
您不应该使用 @keyup
、keydown
等来处理文本输入。
见 - https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
注意:KeyboardEvent 事件仅指示用户在低级别与键盘上的键进行了何种交互,不为该交互提供上下文意义。 当您需要处理文本输入时,请改用 input 事件。如果用户使用其他输入文本的方式(例如平板电脑或图形平板电脑上的手写系统),则可能不会触发键盘事件.