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) }