element-ui中el-select下拉框实现拼音、首字母、汉字等模糊搜索

安装pinyin-match

// 安装 pinyin-match
 npm install pinyin-match --save

引入

import PinyinMatch from 'pinyin-match'

ele 下拉框

<el-select filterable :filter-method="handleFilter">
                      <el-option
                        v-for="item in orderDetails"
                        :key="item.id"
                        :label="item.codeName"
                        :value="item.id"
                      ></el-option>
                    </el-select>

拼音和输入数值过滤

注意:

// 复制
this.copyOrderDetails = Object.assign(this.orderDetails)
handleFilter(val) {
      // 对绑定数据赋值
      if (val) {
        this.orderDetails = this.copyOrderDetails.filter((item) => {
          // 如果直接包含输入值直接返回true
          if (item.codeName) {
            if (item.codeName.toUpperCase().indexOf(val.toUpperCase()) != -1) {
              return true
            }
            // 输入值拼音d
            return PinyinMatch.match(item.codeName, val)
          }
        })
      } else {
        this.orderDetails = this.copyOrderDetails
      }
    }

 

Element UI 的 `el-select` 组件是一个常用的下拉选择组件,它允许用户通过输入筛选选项。如果你想实现自定义筛选并支持全选功能,你可以通过以下几个步骤操作: 1. **绑定数据**: 首先,你需要将需要展示的选项作为数组传入 `el-select` 的 `options` 属性,并保持一个原始未过滤的数据源。 ```html <template> <el-select v-model="selectedValue" filterable placeholder="请选择"> <el-option v-for="item in filteredOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { options: [ ... // 原始选项数组 ], selectedValue: '', filteredOptions: [] } }, computed: { // 过滤函数可以根据某个字段对原始选项进行筛选 filteredOptions() { const searchKey = this.selectedValue.trim(); if (!searchKey) { return this.options; } else { return this.options.filter(item => item.label.includes(searchKey)); } } } } </script> ``` 2. **全选功能**: 可以添加一个单独的开关或按钮,当切换到全选模式时,遍历所有选项设置 `selectedValue` 为它们的值。取消全选则清空 `selectedValue` 或将其设为空字符串。 ```html <!-- 添加一个全选按钮 --> <template> <div> <el-select v-model="selectedValue" ...> ... </el-select> <button @click="selectAll">全选</button> </div> </template> <script> methods: { selectAll() { if (this.options.length > 0) { this.selectedValue = this.options.map(item => item.value).join(','); } else { this.selectedValue = ''; } }, unselectAll() { this.selectedValue = ''; } } </script> ``` 这样,用户就可以在输入框中搜索选项,同时也可以通过全选按钮快速选择所有项目。记得在实际项目中根据需求调整细节。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值