2017-02-06 3 views
2

Я разрабатываю приложение для обмена сообщениями, и мне нужно перечислить несколько прослушивателей событий для окна сообщений (textarea). Когда пользователь нажимает клавишу ввода (@keyup.enter), сообщение отправляется автоматически. Однако мы хотим разрешить пользователю добавлять разрыв строки, если они хотят организовать сообщение. Итак, мы добавляем слушателя @keyup.shift.enter (SHIFT + ENTER). Проблема заключается в том, когда пользователь нажимает SHIFT + ENTER, он вызывает как @keyup.enter, так и @keyup.shift.enter. Есть ли в любом случае, чтобы предотвратить событие @keyup.enter?Прослушивание нескольких событий keyup в Vue 2.0

<textarea 
    v-model="message" 
    @keyup="typing" 
    @keyup.shift.enter="newLine" 
    @keyup.enter="sendMessage" 
></textarea> 

ответ

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.

Смежные вопросы