我正在开发一个消息传递应用程序,我需要列出消息框(textarea)的多个事件监听器。当用户按下enter(@keyup.enter
)时,该消息将自动发送。但是,如果用户想要组织消息,我们希望允许用户添加换行符。因此,我们添加@keyup.shift.enter
(SHIFT + ENTER)侦听器来执行此操作。问题是当用户按SHIFT + ENTER
时,它同时调用@keyup.enter
和@keyup.shift.enter
。无论如何都要阻止@keyup.enter
事件?
<textarea
v-model="message"
@keyup="typing"
@keyup.shift.enter="newLine"
@keyup.enter="sendMessage"
></textarea>
答案 0 :(得分:2)
执行此操作的一种方法是不能使用@keyup.shift.enter
并在@keyup.enter
的通过处理程序内检查shift
是否也被按下,如果是,则调用newLine
否则sendMessage
,如下:
methods: {
typing () {
console.log("typing")
},
newLine () {
console.log("newLine")
},
sendMessage (event) {
if(event.shiftKey){
console.log("newLine")
} else {
console.log("sendMessage")
}
}
}
请参阅工作小提琴here。