想要做一个带搜索框的下拉框?

想要一个这样的下拉框
clipboard.png
可以用element做出来吗?

阅读 9.6k
4 个回答

<el-select v-model="value">

    <el-input v-model="keyWord" v-on:input="myfilter"></el-input>
    <el-option v-for="(item,index) in arr" :key="index" :value="item.id" :label="item.label"></el-option>
  </el-select>
  
  arr:[{
    id:1,
    label:'qqq'
  },{
    id:2,
    label:'www'
  },{
    id:3,
    label:'eee'
  }],
  basearr:[{
    id:1,
    label:'qqq'
  },{
    id:2,
    label:'www'
  },{
    id:3,
    label:'eee'
  }],
  
  
  createFilter(queryString) {
  return (restaurant) => {
    if(restaurant.label !== undefined) {
      return (restaurant.label.toLowerCase().indexOf(queryString.toLowerCase()) >= 0)
    } else {
      return (restaurant.indexOf(queryString) >= 0)
    }
  }
},
myfilter() {
  let queryString = this.keyWord
  let restaurants = this.basearr
  let results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants
  this.arr = results
}

(el-select 是自带 filterable 属性的,也可以不用自己封装)
  
  
  

看了下element ui select组件的源码,针对你的需求,目前element ui select组件是无法满足你的需求的,不过你可以改造一下element ui select组件的源码,又或者自己封装一个组件也是可以的。仿layui下拉框或许我写的这篇文章对你有一定的思路启示帮助。

如果非要用element得话 可以用input和select组合成 利用focus v-model 稍微改下样式就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏