zoukankan      html  css  js  c++  java
  • el-select 输入下拉搜索,匹配不到数据时也保留输入值,同时input获取焦点时保留其value值

    需要注意的地方

    1. 为了在匹配不到数据时也保留其输入的值,可以用 filter-method 自定义筛选

    2. el-select添加上filterable之后,点击展开,点击收起,会导致focus和blur事件不触发,但点击页面其他地方才可正常触发 ,可利用visible-change 事件来解决些问题

    3. input获取焦点时保留其value值用focus事件做相关赋值处理

    具体实现代码如下

     1 <template>
     2   <el-select id="selectInput" v-model="value" filterable placeholder="请选择" ref="searchSelect" :filter-method="dataFilter" @visible-change="visibleChange" @focus="selectFocus" @blur="selectBlur" @change="selectChange">
     3     <el-option
     4       v-for="item in options"
     5       :key="item.value"
     6       :label="item.label"
     7       :value="item.value">
     8     </el-option>
     9   </el-select>
    10 </template>
    11 
    12 <script>
    13   export default {
    14     data() {
    15       return {
    16         options: [{
    17           value: '选项1',
    18           label: '黄金糕'
    19         }, {
    20           value: '选项2',
    21           label: '双皮奶'
    22         }],
    23         optionsFilter: [{
    24           value: '选项1',
    25           label: '黄金糕'
    26         }, {
    27           value: '选项2',
    28           label: '双皮奶'
    29         }],
    30         value: ''
    31       }
    32     },
    33     methods: {
    34         dataFilter(val) {
    35             this.value = val;
    36             if (val) {
    37             this.options = this.optionsFilter.filter((item) => {
    38                 if (item.label.includes(val) || item.label.toUpperCase().includes(val.toUpperCase())) {
    39                   return true
    40                 }
    41             })
    42             } else {
    43             this.options = this.optionsFilter;
    44             }
    45     },
    46     selectFocus(e){
    47       let value = e.target.value;
    48        setTimeout(() => {
    49           let input = this.$refs.searchSelect.$children[0].$refs.input;
    50           input.value = value;
    51       })
    52     },
    53     selectBlur(){
    54       //console.log('失去')
    55     },
    56     selectChange(){
    57            
    58     },
    59     visibleChange(val){
    60       if(!val){
    61         let input = this.$refs.searchSelect.$children[0].$refs.input;
    62         input.blur();
    63       }
    64      
    65     }
    66     }
    67   }
    68 </script>
  • 相关阅读:
    C#之泛型
    etcd 使用: golang 例子
    九卷读书:《高效能人士的7个习惯》脑图
    Go package(2) strings 用法
    技术管理:技术管理者的多维度能力及成长路径
    gin框架教程:代码系列demo地址
    五大常见的MySQL高可用方案
    gin框架教程三:JWT的使用
    九卷读书:商业模式画布
    Go package(1) time 用法
  • 原文地址:https://www.cnblogs.com/dibaosong/p/12878671.html
Copyright © 2011-2022 走看看