中文输入处理

122 阅读1分钟
<input
ref="input"
@input="handleComposition"
@compositionstart="handleComposition"
@compositionupdate="handleComposition"
@compositionend="handleComposition"
\>

handleComposition(event) {
    console.log(event.type)
}
// 拼音输入时
// compositionstart
// compositionupdate
// input
// compositionupdate
// input
// compositionupdate
// input
// compositionupdate
// input
// compositionupdate
// input
// compositionupdate
// input
// compositionend

使用中文输入法时input原生提供compositionstartcompositionupdatecompositionend(注意单纯的html只有使用addEventListener('event', func)才能触发);

在打拼音时:

  1. 首先触发compositionstart
  2. 然后每打一个拼音字母,触发compositionupdate,同时触发input事件;
  3. 最后将输入好的中文填入input中时触发compositionend

在触发compositionend时,就是填入实际内容后(已确认文本),所以这里如果不想触发input事件的话就得设置一个bool变量来控制。