【发布时间】:2024-04-28 16:00:02
【问题描述】:
我正在尝试实现类似 slack 的功能,以便仅在按确切输入时发送消息(不按 shift)
考虑这个 vue 模板
<textarea type="text" v-model="message" @keyup.enter.exact="sendMessage($event)"></textarea>
用这个组件
export default {
name: 'Typing',
data() {
return {
message: null
}
},
methods: {
sendMessage(e) {
// e.stopPropagation() and e.preventDefault() have no impact
this.$socket.emit('message', { text: this.message });
console.log(this.message); // Print the message with another '\n' at the end due to textarea default behavior
}
}
}
有没有人知道如何避免在不使用正则表达式将其发送到后端之前删除最后一个 '\n'(我认为这会很脏)?
谢谢
PS:我对 VueJS 堆栈还很陌生,希望我的问题不明显
编辑:This question 类似,但建议的解决方案不起作用
【问题讨论】:
-
IMO keyup 事件不适合此目的。 Keypress、keydown 和 keyup 有副作用,比如你的 '\n' 字符。喝完咖啡,我会写一个例子来回答。
-
看起来像重复的*.com/questions/44680638/…
标签: javascript vue.js vuejs2 vue-component