diff --git a/packages/components/input-number/__tests__/input-number.test.tsx b/packages/components/input-number/__tests__/input-number.test.tsx index f9c2a029d6..11b0cde6fd 100755 --- a/packages/components/input-number/__tests__/input-number.test.tsx +++ b/packages/components/input-number/__tests__/input-number.test.tsx @@ -429,6 +429,8 @@ describe('InputNumber.vue', () => { elInput.handleInputChange('') await nextTick() expect(num.value).toBe(5) + await wrapper.find('input').setValue('') + expect(num.value).toBe(5) elInput.decrease() await nextTick() expect(num.value).toBe(4) diff --git a/packages/components/input-number/src/input-number.vue b/packages/components/input-number/src/input-number.vue index ddced5bc5c..eadc4c7e38 100755 --- a/packages/components/input-number/src/input-number.vue +++ b/packages/components/input-number/src/input-number.vue @@ -239,10 +239,12 @@ const setCurrentValue = ( emit(UPDATE_MODEL_EVENT, newVal!) return } - if (oldVal === newVal) return + if (oldVal === newVal && value) return data.userInput = null emit(UPDATE_MODEL_EVENT, newVal!) - emit(CHANGE_EVENT, newVal!, oldVal!) + if (oldVal !== newVal) { + emit(CHANGE_EVENT, newVal!, oldVal!) + } if (props.validateEvent) { formItem?.validate?.('change').catch((err) => debugWarn(err)) }