diff --git a/packages/input-number/src/input-number.vue b/packages/input-number/src/input-number.vue index 3b0c6b35b..e5f964b40 100644 --- a/packages/input-number/src/input-number.vue +++ b/packages/input-number/src/input-number.vue @@ -117,6 +117,8 @@ if (newVal <= this.max && newVal >= this.min) { this.$emit('change', newVal, oldVal); this.$emit('input', newVal); + } else { + this.currentValue = oldVal; } } }, diff --git a/test/unit/specs/input-number.spec.js b/test/unit/specs/input-number.spec.js index 6e37cb25f..73d6cd841 100644 --- a/test/unit/specs/input-number.spec.js +++ b/test/unit/specs/input-number.spec.js @@ -234,6 +234,35 @@ describe('InputNumber', () => { expect(vm.$el.querySelector('.el-input-number__decrease')).to.not.exist; expect(vm.$el.querySelector('.el-input-number__increase')).to.not.exist; }); + it('invalid value reset', done => { + vm = createVue({ + template: ` + + + `, + data() { + return { + value: 5 + }; + } + }, true); + + vm.value = 100; + vm.$nextTick(_ => { + expect(vm.value).to.be.equal(5); + vm.value = 4; + + vm.$nextTick(_ => { + expect(vm.value).to.be.equal(5); + vm.value = 'dsajkhd'; + + vm.$nextTick(_ => { + expect(vm.value).to.be.equal(5); + done(); + }); + }); + }); + }); it('event:change', done => { vm = createVue({ template: `