Commit 47f03c5419e77b20cd6012584ef5b23ed696302f
1 parent
7a215509
fix #4273
Showing
2 changed files
with
15 additions
and
2 deletions
Show diff stats
src/components/select/select-head.vue
@@ -155,6 +155,7 @@ | @@ -155,6 +155,7 @@ | ||
155 | }, | 155 | }, |
156 | resetInputState () { | 156 | resetInputState () { |
157 | this.inputLength = this.$refs.input.value.length * 12 + 20; | 157 | this.inputLength = this.$refs.input.value.length * 12 + 20; |
158 | + this.$emit('on-keydown'); | ||
158 | }, | 159 | }, |
159 | handleInputDelete () { | 160 | handleInputDelete () { |
160 | if (this.multiple && this.selectedMultiple.length && this.query === '') { | 161 | if (this.multiple && this.selectedMultiple.length && this.query === '') { |
src/components/select/select.vue
@@ -44,6 +44,8 @@ | @@ -44,6 +44,8 @@ | ||
44 | @on-input-focus="isFocused = true" | 44 | @on-input-focus="isFocused = true" |
45 | @on-input-blur="isFocused = false" | 45 | @on-input-blur="isFocused = false" |
46 | @on-clear="clearSingleSelect" | 46 | @on-clear="clearSingleSelect" |
47 | + | ||
48 | + @on-keydown="handleFilterInputKeyDown" | ||
47 | /> | 49 | /> |
48 | </slot> | 50 | </slot> |
49 | </div> | 51 | </div> |
@@ -264,6 +266,7 @@ | @@ -264,6 +266,7 @@ | ||
264 | unchangedQuery: true, | 266 | unchangedQuery: true, |
265 | hasExpectedValue: false, | 267 | hasExpectedValue: false, |
266 | preventRemoteCall: false, | 268 | preventRemoteCall: false, |
269 | + filterQueryKeyDown: false, // #4273 | ||
267 | }; | 270 | }; |
268 | }, | 271 | }, |
269 | computed: { | 272 | computed: { |
@@ -392,7 +395,7 @@ | @@ -392,7 +395,7 @@ | ||
392 | if (cOptions.children.length > 0) selectOptions.push({...option}); | 395 | if (cOptions.children.length > 0) selectOptions.push({...option}); |
393 | } else { | 396 | } else { |
394 | // ignore option if not passing filter | 397 | // ignore option if not passing filter |
395 | - if (!hasDefaultSelected) { | 398 | + if (!hasDefaultSelected || this.filterQueryKeyDown) { |
396 | const optionPassesFilter = this.filterable ? this.validateOption(cOptions) : option; | 399 | const optionPassesFilter = this.filterable ? this.validateOption(cOptions) : option; |
397 | if (!optionPassesFilter) continue; | 400 | if (!optionPassesFilter) continue; |
398 | } | 401 | } |
@@ -402,6 +405,8 @@ | @@ -402,6 +405,8 @@ | ||
402 | } | 405 | } |
403 | } | 406 | } |
404 | 407 | ||
408 | + this.filterQueryKeyDown = false; | ||
409 | + | ||
405 | return selectOptions; | 410 | return selectOptions; |
406 | }, | 411 | }, |
407 | flatOptions(){ | 412 | flatOptions(){ |
@@ -658,7 +663,14 @@ | @@ -658,7 +663,14 @@ | ||
658 | if (this.getInitialValue().length > 0 && this.selectOptions.length === 0) { | 663 | if (this.getInitialValue().length > 0 && this.selectOptions.length === 0) { |
659 | this.hasExpectedValue = true; | 664 | this.hasExpectedValue = true; |
660 | } | 665 | } |
661 | - } | 666 | + }, |
667 | + /** | ||
668 | + * 下面的方法,当 filterable 时,输入内容时,标记,用于区分和直接选择而引起的 bug | ||
669 | + * #4273 | ||
670 | + * */ | ||
671 | + handleFilterInputKeyDown () { | ||
672 | + this.filterQueryKeyDown = true; | ||
673 | + }, | ||
662 | }, | 674 | }, |
663 | watch: { | 675 | watch: { |
664 | value(value){ | 676 | value(value){ |