vue input使用v-model时,输入中文首字母时不触发更新
在vue中使用v-model双向绑定时,输入中文首字母不触发data更新
通过绑定事件实现:
el.addEventListener('compositionstart', onCompositionStart)
el.addEventListener('compositionend', onCompositionEnd)
修改composing的值,输入中文完成时手动触发input事件。
源码如下:
function onCompositionStart(e) {
    e.target.composing = true
}
function onCompositionEnd(e) {
    // prevent triggering an input event for no reason
    if (!e.target.composing) return
    e.target.composing = false
    trigger(e.target, 'input')
}
function trigger(el, type) {
    const e = document.createEvent('HTMLEvents')
    e.initEvent(type, true, true)
    el.dispatchEvent(e)
}