在处理用户输入<input>标签的文本时,平时我们都是用input/propertychange事件进行操作和过滤,但有时候会出现处理中文的情况,在中文输入时,用户还没有输入他想输入的中文,只是输入了几个拼音字符,但 input 事件也被触发了,提示长度超过上限。那有没有更好的方法避免这种情况呢?
可以采用compositionstart和compositionend来捕获IME(input method editor)的启动和关闭事件。
根据规范,Composition 事件触发顺序如下:
- 输入开始时触发
compositionstart
- 选择字/词完成输入时触发
compositionend
- 输入过程中每次击键时触发
compositionupdate
,包括 start 事件以后立即触发,end 事件以前立即触发 - Composition 事件以后触发
input
事件