Commit f43bc792befba702245d8f742086a307c5a44f90

Authored by 梁灏
1 parent 57bd5393

fix #5060

Showing 1 changed file with 19 additions and 1 deletions   Show diff stats
src/components/input/input.vue
@@ -30,6 +30,9 @@ @@ -30,6 +30,9 @@
30 @keydown="handleKeydown" 30 @keydown="handleKeydown"
31 @focus="handleFocus" 31 @focus="handleFocus"
32 @blur="handleBlur" 32 @blur="handleBlur"
  33 + @compositionstart="handleComposition"
  34 + @compositionupdate="handleComposition"
  35 + @compositionend="handleComposition"
33 @input="handleInput" 36 @input="handleInput"
34 @change="handleChange"> 37 @change="handleChange">
35 <div :class="[prefixCls + '-group-append']" v-if="append" v-show="slotReady"><slot name="append"></slot></div> 38 <div :class="[prefixCls + '-group-append']" v-if="append" v-show="slotReady"><slot name="append"></slot></div>
@@ -62,6 +65,9 @@ @@ -62,6 +65,9 @@
62 @keydown="handleKeydown" 65 @keydown="handleKeydown"
63 @focus="handleFocus" 66 @focus="handleFocus"
64 @blur="handleBlur" 67 @blur="handleBlur"
  68 + @compositionstart="handleComposition"
  69 + @compositionupdate="handleComposition"
  70 + @compositionend="handleComposition"
65 @input="handleInput"> 71 @input="handleInput">
66 </textarea> 72 </textarea>
67 </div> 73 </div>
@@ -179,7 +185,8 @@ @@ -179,7 +185,8 @@
179 slotReady: false, 185 slotReady: false,
180 textareaStyles: {}, 186 textareaStyles: {},
181 showPrefix: false, 187 showPrefix: false,
182 - showSuffix: false 188 + showSuffix: false,
  189 + isOnComposition: false
183 }; 190 };
184 }, 191 },
185 computed: { 192 computed: {
@@ -244,7 +251,18 @@ @@ -244,7 +251,18 @@
244 this.dispatch('FormItem', 'on-form-blur', this.currentValue); 251 this.dispatch('FormItem', 'on-form-blur', this.currentValue);
245 } 252 }
246 }, 253 },
  254 + handleComposition(event) {
  255 + if (event.type === 'compositionstart') {
  256 + this.isOnComposition = true;
  257 + }
  258 + if (event.type === 'compositionend') {
  259 + this.isOnComposition = false;
  260 + this.handleInput(event);
  261 + }
  262 + },
247 handleInput (event) { 263 handleInput (event) {
  264 + if (this.isOnComposition) return;
  265 +
248 let value = event.target.value; 266 let value = event.target.value;
249 if (this.number && value !== '') value = Number.isNaN(Number(value)) ? value : Number(value); 267 if (this.number && value !== '') value = Number.isNaN(Number(value)) ? value : Number(value);
250 this.$emit('input', value); 268 this.$emit('input', value);