ElementUi el-autocomplete输入框智能提示组件(解决了使用clearable属性,点击清除后重新输入不再出现提示列表的问题)

1.template中

    <el-row>
      <el-col :span="24">
        <label for="search">一键查询</label>
        <el-autocomplete
          ref="myAutocomplete"
          v-model="searchKey"
          :fetch-suggestions="querySearch"
          :trigger-on-focus="true"
          clearable
          placeholder="搜索 | 查找关键字"
          size="medium"
          @clear="clearInput"
          @select="search"
          @keyup.enter.native="search"
        />

        <el-button id="search" :loading="searchLoading"
         plain type="primary" @click="search">
          查询
        </el-button>
      </el-col>
    </el-row>

2.data中

      searchKey: '',
      searchLoading: false,
      restaurants: [], // 智能提示列表数据,是一个数组对象
      handleFocus: false, 

3.methods中

    /* 处理生成智能提示列表 */
    querySearch(queryString, cb) {
      const restaurants = this.restaurants;
      const results = queryString ? this.createFilter(queryString) : restaurants;
      // 调用 callback 返回建议列表的数据
      cb(results);
      // 至关重要,这是当点击清空按钮后,再次聚焦一次输入框,然后聚焦后把handleFocus设置为false,就不自动聚焦,如果没有此步骤,就会点击清空按钮后不提示了
      if (this.handleFocus) {
        this.$refs.myAutocomplete.handleFocus();
        this.handleFocus = false;
      }
    },
    
    /* 处理智能列表数据 */
    createFilter(queryString) {
      let temp = this.restaurants.filter(item => {
        return item.value.toLowerCase().includes(queryString.toLowerCase());
      });
      let res = temp.sort(function (a, b) {
        // 按照名称升序
        return a.value.localeCompare(b.value);
      });
      return res;
    },
    
   /* 当点击清空事件后,要再次调用该组件中的方法,进行聚焦 */
    clearInput() {
      this.handleFocus = true;
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue.js 3中实现自动完成下拉列表的方法很简单,可以使用Vue.js提供的指令和组件的功能来实现。 首先,你需要引入ElementUI库,它是一个基于Vue.js组件库,提供了非常好用的组件和指令。其中el-autocomplete是用来实现输入框的自动完成下拉列表组件。 接下来,你需要在Vue.js的template(模板)中使用el-autocomplete组件,最基本的使用方法如下: ```html <template> <el-autocomplete v-model="value" :fetch-suggestions="querySearch" placeholder="请输入" /> </template> ``` 在这里,v-model用来绑定输入框的值,placeholder用来设置输入框提示语,:fetch-suggestions用来绑定一个函数,该函数会在输入框输入时被调用,它的返回值是一个数组,用来显示下拉列表中的选项。 接下来,你需要在Vue.js的script(脚本)中实现querySearch函数,该函数需要返回一个Promise对象,用来异步获取输入框输入后的联想词,例如: ```javascript <script> import { ref } from 'vue'; import { fetchSuggestions } from '@/api/suggestion.js'; export default { setup() { const value = ref(''); const querySearch = async (queryString) => { return await fetchSuggestions(queryString); }; return { value, querySearch, }; }, }; </script> ``` 在这里,我们用了Vue.js 3中新增的setup函数,在该函数中,我们使用了ref定义了value变量,并定义了querySearch函数,该函数使用async/await实现异步调用了一个api/suggestion.js的函数fetchSuggestions,该函数的接口可以根据自己的实际需求进行实现。 最后,你需要在Vue.js的style(样式)中引入ElementUI的样式,以确保el-autocomplete组件正常显示: ```css @import "element-plus/packages/theme-chalk/src/index.scss"; ``` 综上所述,使用Vue.js 3和ElementUI库实现输入框的自动完成下拉列表功能就这么简单,你只需要引入库、定义组件和指令、实现函数即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一笑痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值