diff --git a/components/_util/antInputDirective.js b/components/_util/antInputDirective.js index aad61bb32..abbb4d7fe 100644 --- a/components/_util/antInputDirective.js +++ b/components/_util/antInputDirective.js @@ -17,15 +17,12 @@ function makeMap(str, expectsLowerCase) { const isTextInputType = makeMap('text,number,password,search,email,tel,url'); function onCompositionStart(e) { - e.target.originPlaceholder = e.target.placeholder; - e.target.placeholder = ''; e.target.composing = true; } function onCompositionEnd(e) { // prevent triggering an input event for no reason if (!e.target.composing) return; - e.target.placeholder = e.target.originPlaceholder; e.target.composing = false; trigger(e.target, 'input'); } diff --git a/components/input/Input.jsx b/components/input/Input.jsx index 5fa4f84d2..e7a003e83 100644 --- a/components/input/Input.jsx +++ b/components/input/Input.jsx @@ -173,12 +173,9 @@ export default { }); }, handleChange(e) { - if (e.inputType === 'insertCompositionText') { - return; - } const { value, composing } = e.target; // https://github.com/vueComponent/ant-design-vue/issues/2203 - if ((composing && this.lazy) || this.stateValue === value) return; + if (((e.isComposing || composing) && this.lazy) || this.stateValue === value) return; this.setValue(value, this.clearPasswordValueAttribute); resolveOnChange(this.$refs.input, e, this.onChange); }, diff --git a/components/input/TextArea.jsx b/components/input/TextArea.jsx index 883f7578b..5e8afa7c8 100644 --- a/components/input/TextArea.jsx +++ b/components/input/TextArea.jsx @@ -69,11 +69,8 @@ export default { this.$emit('input', e); }, handleChange(e) { - if (e.inputType === 'insertCompositionText') { - return; - } const { value, composing } = e.target; - if ((composing && this.lazy) || this.stateValue === value) return; + if (((e.isComposing || composing) && this.lazy) || this.stateValue === value) return; this.setValue(e.target.value, () => { this.$refs.resizableTextArea.resizeTextarea(); diff --git a/components/vc-calendar/src/date/DateInput.jsx b/components/vc-calendar/src/date/DateInput.jsx index ad528c824..21abf5770 100644 --- a/components/vc-calendar/src/date/DateInput.jsx +++ b/components/vc-calendar/src/date/DateInput.jsx @@ -85,7 +85,7 @@ const DateInput = { onInputChange(e) { const { value: str, composing } = e.target; const { str: oldStr = '' } = this; - if (composing || oldStr === str) return; + if (e.isComposing || composing || oldStr === str) return; const { disabledDate, format, selectedValue } = this.$props; diff --git a/components/vc-mentions/src/Mentions.jsx b/components/vc-mentions/src/Mentions.jsx index 77ceab856..6b4a12e70 100644 --- a/components/vc-mentions/src/Mentions.jsx +++ b/components/vc-mentions/src/Mentions.jsx @@ -72,8 +72,8 @@ const Mentions = { } this.$emit('change', value); }, - onChange({ target: { value, composing } }) { - if (composing) return; + onChange({ target: { value, composing }, isComposing }) { + if (isComposing || composing) return; this.triggerChange(value); }, onKeyDown(event) { diff --git a/components/vc-pagination/Options.jsx b/components/vc-pagination/Options.jsx index aef1f2975..316518735 100644 --- a/components/vc-pagination/Options.jsx +++ b/components/vc-pagination/Options.jsx @@ -33,7 +33,7 @@ export default { }, handleChange(e) { const { value, composing } = e.target; - if (composing || this.goInputText === value) return; + if (e.isComposing || composing || this.goInputText === value) return; this.setState({ goInputText: value, }); diff --git a/components/vc-pagination/Pagination.jsx b/components/vc-pagination/Pagination.jsx index 3af853e58..14d75f3e9 100644 --- a/components/vc-pagination/Pagination.jsx +++ b/components/vc-pagination/Pagination.jsx @@ -195,7 +195,7 @@ export default { } }, handleKeyUp(e) { - if (e.target.composing) return; + if (e.isComposing || e.target.composing) return; const value = this.getValidValue(e); const stateCurrentInputValue = this.stateCurrentInputValue; diff --git a/components/vc-select/Select.jsx b/components/vc-select/Select.jsx index 69b85c6b0..a97ecf1d3 100644 --- a/components/vc-select/Select.jsx +++ b/components/vc-select/Select.jsx @@ -323,7 +323,7 @@ const Select = { onInputChange(e) { const { value: val, composing } = e.target; const { _inputValue = '' } = this.$data; - if (composing || _inputValue === val) { + if (e.isComposing || composing || _inputValue === val) { this.setState({ _mirrorInputValue: val, }); diff --git a/components/vc-time-picker/Header.jsx b/components/vc-time-picker/Header.jsx index 5ab94db92..45be581cd 100644 --- a/components/vc-time-picker/Header.jsx +++ b/components/vc-time-picker/Header.jsx @@ -61,7 +61,7 @@ const Header = { onInputChange(e) { const { value: str, composing } = e.target; const { str: oldStr = '' } = this; - if (composing || oldStr === str) return; + if (e.isComposing || composing || oldStr === str) return; this.setState({ str, diff --git a/components/vc-tree-select/src/SearchInput.jsx b/components/vc-tree-select/src/SearchInput.jsx index b51c3eb84..78f229661 100644 --- a/components/vc-tree-select/src/SearchInput.jsx +++ b/components/vc-tree-select/src/SearchInput.jsx @@ -98,7 +98,7 @@ const SearchInput = { handleInputChange(e) { const { value, composing } = e.target; const { searchValue = '' } = this; - if (composing || searchValue === value) { + if (e.isComposing || composing || searchValue === value) { this.mirrorSearchValue = value; return; }