From c6a5a3d794f73e01ea6d8aaac37de9ee8fcfa94a Mon Sep 17 00:00:00 2001 From: Jiewei Qian Date: Fri, 10 Aug 2018 23:52:50 +1000 Subject: [PATCH] date-picker: fix form change validation --- packages/date-picker/src/picker.vue | 6 +++++- test/unit/specs/form.spec.js | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/date-picker/src/picker.vue b/packages/date-picker/src/picker.vue index d7c4b92b99..5365fd9ec7 100644 --- a/packages/date-picker/src/picker.vue +++ b/packages/date-picker/src/picker.vue @@ -428,6 +428,11 @@ export default { if (this.picker) { this.picker.defaultValue = val; } + }, + value(val, oldVal) { + if (!valueEquals(val, oldVal)) { + this.dispatch('ElFormItem', 'el.form.change', val); + } } }, @@ -894,7 +899,6 @@ export default { // determine user real change only if (!valueEquals(val, this.valueOnOpen)) { this.$emit('change', val); - this.dispatch('ElFormItem', 'el.form.change', val); this.valueOnOpen = val; } }, diff --git a/test/unit/specs/form.spec.js b/test/unit/specs/form.spec.js index cf60ae79b4..b60aa167d2 100644 --- a/test/unit/specs/form.spec.js +++ b/test/unit/specs/form.spec.js @@ -483,11 +483,11 @@ describe('Form', () => { expect(valid).to.not.true; setTimeout(_ => { expect(field.validateMessage).to.equal('请选择日期'); - // programatic modification does not trigger change - vm.value = new Date(); + // programatic modification triggers change validation + vm.form.date = new Date(); setTimeout(_ => { - expect(field.validateMessage).to.equal('请选择日期'); - vm.value = ''; + expect(field.validateMessage).to.equal(''); + vm.form.date = ''; // user modification triggers change const input = vm.$refs.picker.$el.querySelector('input'); input.blur();