vue中的keyup事件
记录一下使用keyup遇到的几个问题
组合键和单个键复用
有时候会需要同时用到组合键和单个键
这时对于复合键之间加上即可,但对于单个键则需要添加修饰符exact
@keyup.enter.exact="send"
@keydown.ctrl.enter="getLine">
这样当按下ctrl+enter会触发getLine
只按下enter才会触发send
回车按键与输入法冲突问题
中文输入法中经常用到使用回车来打印英文,而不是中文。
当在js中又监听了回车按键的事件,因此会被触发
@keyup.enter.exact="send"
使用keyup来触发回车弹起的事件:
- 在chrome浏览器中可以正常实现只把英文显示而不会触发事件
- 当在firefox浏览器中回车会把英文显示,然后直接触发事件
因此把keyup修改为keydown事件
@keydown.enter.exact="send"
该为keydown事件后两个浏览器都可以正常实现,只显示英文,而不会触发事件。
当在textarea中做文本框输入时,虽然不会触发事件,但在主动回车发送消息后会在文本框中留下一个换行符。
上面的问题可能是因为keydown是可以多次触发的缘故。
因此尝试禁止默认事件
event.preventDefault()
终于可以正常实现了。