diff --git a/packages/vuetify/src/components/VTextField/VTextField.tsx b/packages/vuetify/src/components/VTextField/VTextField.tsx index 139b7ef2d72..f2d9b52dafc 100644 --- a/packages/vuetify/src/components/VTextField/VTextField.tsx +++ b/packages/vuetify/src/components/VTextField/VTextField.tsx @@ -138,7 +138,9 @@ export const VTextField = genericComponent()({ callEvent(props['onClick:clear'], e) }) } - function onInput (e: Event) { + function onInput (e: InputEvent) { + if (e.isComposing) return + const el = e.target as HTMLInputElement model.value = el.value if ( @@ -153,6 +155,10 @@ export const VTextField = genericComponent()({ } } + function onCompositionend (e: CompositionEvent) { + model.value = e.data + } + useRender(() => { const hasCounter = !!(slots.counter || (props.counter !== false && props.counter != null)) const hasDetails = !!(hasCounter || slots.details) @@ -214,6 +220,7 @@ export const VTextField = genericComponent()({ ref={ inputRef } value={ model.value } onInput={ onInput } + onCompositionend={ onCompositionend } v-intersect={[{ handler: onIntersect, }, null, ['once']]}