From 435a6e86b8f2df2e4fb27aa51e9b2ca1710f5c6e Mon Sep 17 00:00:00 2001 From: mengxiong10 <15623530290@163.com> Date: Fri, 6 Mar 2020 20:44:00 +0800 Subject: [PATCH] fix: split error when rangeSeparator is same as token --- __test__/date-picker.test.js | 5 ++++- src/date-picker.vue | 13 ++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/__test__/date-picker.test.js b/__test__/date-picker.test.js index 6d2ccba..0f209f6 100644 --- a/__test__/date-picker.test.js +++ b/__test__/date-picker.test.js @@ -382,6 +382,9 @@ describe('DatePicker', () => { input.trigger('change'); input.setValue(`${text}${rangeSeparator.trim()}${text}`); input.trigger('change'); - expect(wrapper.emitted().input).toEqual([[[text, text]], [[text, text]]]); + wrapper.setProps({ rangeSeparator: ' - ' }); + input.setValue(`${text} - ${text}`); + input.trigger('change'); + expect(wrapper.emitted().input).toEqual([[[text, text]], [[text, text]], [[text, text]]]); }); }); diff --git a/src/date-picker.vue b/src/date-picker.vue index 694c5f6..1d138d6 100644 --- a/src/date-picker.vue +++ b/src/date-picker.vue @@ -425,9 +425,16 @@ export default { this.handleClear(); return; } - const date = this.range - ? text.split(this.rangeSeparator.trim()).map(v => this.parseDate(v.trim(), this.format)) - : this.parseDate(text, this.format); + let date; + if (this.range) { + let arr = text.split(this.rangeSeparator); + if (arr.length !== 2) { + arr = text.split(this.rangeSeparator.trim()); + } + date = arr.map(v => this.parseDate(v.trim(), this.format)); + } else { + date = this.parseDate(text, this.format); + } if (this.isValidValue(date)) { this.emitValue(date); this.blur();