Element UI input输入框实现模糊查询

Element UI input输入框实现模糊查询

模糊查询

elementui提供的带输入建议,只能根据第一个名字进行检索,但是我们往往更多需要模糊搜索

根据名称第一个字搜索模糊搜索

代码片段
 <el-autocomplete
      class="inline-input"
      v-model="state2"
      :fetch-suggestions="querySearch"
      placeholder="请输入内容"
      :trigger-on-focus="false"
      @select="handleSelect"
    ></el-autocomplete>
  data() {
    return {
      restaurants: [], //列表数据
      state2: "", //内容
     };
  },
 mounted() {
    this.restaurants = this.loadAll();
  },
 methods: {
   handleSelect(item) {
      console.log(item);
   },
   querySearch(queryString, cb) {
      var restaurants = this.restaurants;
      var results = queryString
        ? restaurants.filter(this.createFilter(queryString))
        : restaurants;
      // 调用 callback 返回建议列表的数据
      cb(results);
    },
    //检索名称第一个字或者模糊搜索该方法决定的
    createFilter(queryString) {
       return (state) => {
        return (state.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1);
        //elementui写法是检索0
        //return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
      };
    },
    loadAll() {
      return [
        { value: "港式小铺", address: "上海市长宁区金钟路968号15楼15-105室" },
        { value: "蜀香源麻辣香锅(剑河路店)", address: "剑河路443-1" },
        { value: "北京饺子馆", address: "长宁区北新泾街道天山西路490-1号" },
        {
          value: "饭典*新简餐(凌空SOHO店)",
          address: "上海市长宁区金钟路968号9号楼地下一层9-83室",
        },
        {
          value: "焦耳·川式快餐(金钟路店)",
          address: "上海市金钟路633号地下一层甲部",
        },
        { value: "动力鸡车", address: "长宁区仙霞西路299弄3号101B" },
        { value: "浏阳蒸菜", address: "天山西路430号" },
        { value: "四海游龙(天山西路店)", address: "上海市长宁区天山西路" },
        { value: "红辣椒麻辣烫", address: "上海市长宁区天山西路492号" },
        {
          value: "(小杨生煎)西郊百联餐厅",
          address: "长宁区仙霞西路88号百联2楼",
        },
        { value: "阳阳麻辣烫", address: "天山西路389号" },
        {
          value: "南拳妈妈龙虾盖浇饭",
          address: "普陀区金沙江路1699号鑫乐惠美食广场A13",
        },
      ];
    },
 }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中使用element-uiInput组件实现模糊查询,你可以通过v-model绑定输入框的值,并监听输入框的change事件,在事件处理函数中调用接口进行查询操作。另外,你可以使用element-ui的Autocomplete组件来实现带有下拉提示的模糊查询效果。 示例代码如下: ```html <template> <div> <el-input v-model="keyword" @change="handleSearch" placeholder="请输入关键字"></el-input> <el-autocomplete v-model="selectedValue" :fetch-suggestions="querySearch" placeholder="请输入关键字" @select="handleSelect"> <template slot-scope="{ item }">{{ item }}</template> </el-autocomplete> </div> </template> <script> export default { data() { return { keyword: '', selectedValue: '', suggestions: [] }; }, methods: { handleSearch() { // 调用接口进行查询操作,将查询结果更新到suggestions数组中 // 示例代码中直接使用了一个固定的suggestions数组作为演示,请根据实际需求进行修改 this.suggestions = ['结果1', '结果2', '结果3']; }, querySearch(queryString, cb) { // 在这里可以根据输入的queryString调用接口获取匹配的结果,并通过cb回调函数返回给Autocomplete组件 // 示例代码中直接使用了一个固定的suggestions数组作为演示,请根据实际需求进行修改 const results = queryString ? this.suggestions.filter(item => item.includes(queryString)) : this.suggestions; cb(results); }, handleSelect(item) { // 处理选中某个下拉项的逻辑 console.log('选中的项:', item); } } }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值