diff --git a/src/components/input/input.vue b/src/components/input/input.vue index 912b72c..9c1cc50 100644 --- a/src/components/input/input.vue +++ b/src/components/input/input.vue @@ -30,6 +30,9 @@ @keydown="handleKeydown" @focus="handleFocus" @blur="handleBlur" + @compositionstart="handleComposition" + @compositionupdate="handleComposition" + @compositionend="handleComposition" @input="handleInput" @change="handleChange">
@@ -62,6 +65,9 @@ @keydown="handleKeydown" @focus="handleFocus" @blur="handleBlur" + @compositionstart="handleComposition" + @compositionupdate="handleComposition" + @compositionend="handleComposition" @input="handleInput"> @@ -179,7 +185,8 @@ slotReady: false, textareaStyles: {}, showPrefix: false, - showSuffix: false + showSuffix: false, + isOnComposition: false }; }, computed: { @@ -244,7 +251,18 @@ this.dispatch('FormItem', 'on-form-blur', this.currentValue); } }, + handleComposition(event) { + if (event.type === 'compositionstart') { + this.isOnComposition = true; + } + if (event.type === 'compositionend') { + this.isOnComposition = false; + this.handleInput(event); + } + }, handleInput (event) { + if (this.isOnComposition) return; + let value = event.target.value; if (this.number && value !== '') value = Number.isNaN(Number(value)) ? value : Number(value); this.$emit('input', value); -- libgit2 0.21.4