最近碰到两个键盘事件的问题,以前一直没怎么注意。
中文输入法的回车问题
很多输入框都支持Enter
回车键提交,但是在中文输入法下,用回车输入英文的时候会直接触发Enter
提交行为。此时可以使用KeyboardEvent
的isComposing
属性可以判断当前是否是处于输入过程中,即是否在compositionstart
和compositionend
之间,如果isComposing
为true
,忽略此时的Enter
即可。在Firefox
和Chrome
中都无此问题,但是在Safari
下,此时的isComposing
会为false
,无法正常处理此时的Enter
。
迫于无奈,只好看下Event
中是否还有其他属性可以使用,试试key
、code
和被抛弃的keyCode
:
console.log(e.key, e.code, e.keyCode, e.isComposing)