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
src/components/select/select.vue
... | ... | @@ -44,6 +44,8 @@ |
44 | 44 | @on-input-focus="isFocused = true" |
45 | 45 | @on-input-blur="isFocused = false" |
46 | 46 | @on-clear="clearSingleSelect" |
47 | + | |
48 | + @on-keydown="handleFilterInputKeyDown" | |
47 | 49 | /> |
48 | 50 | </slot> |
49 | 51 | </div> |
... | ... | @@ -264,6 +266,7 @@ |
264 | 266 | unchangedQuery: true, |
265 | 267 | hasExpectedValue: false, |
266 | 268 | preventRemoteCall: false, |
269 | + filterQueryKeyDown: false, // #4273 | |
267 | 270 | }; |
268 | 271 | }, |
269 | 272 | computed: { |
... | ... | @@ -392,7 +395,7 @@ |
392 | 395 | if (cOptions.children.length > 0) selectOptions.push({...option}); |
393 | 396 | } else { |
394 | 397 | // ignore option if not passing filter |
395 | - if (!hasDefaultSelected) { | |
398 | + if (!hasDefaultSelected || this.filterQueryKeyDown) { | |
396 | 399 | const optionPassesFilter = this.filterable ? this.validateOption(cOptions) : option; |
397 | 400 | if (!optionPassesFilter) continue; |
398 | 401 | } |
... | ... | @@ -402,6 +405,8 @@ |
402 | 405 | } |
403 | 406 | } |
404 | 407 | |
408 | + this.filterQueryKeyDown = false; | |
409 | + | |
405 | 410 | return selectOptions; |
406 | 411 | }, |
407 | 412 | flatOptions(){ |
... | ... | @@ -658,7 +663,14 @@ |
658 | 663 | if (this.getInitialValue().length > 0 && this.selectOptions.length === 0) { |
659 | 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 | 675 | watch: { |
664 | 676 | value(value){ | ... | ... |