带输入建议el-autocomplete

本文介绍了如何在Element-ui官网的组件中,使用Autocomplete实现危化品名称的输入建议功能,包括初始化列表数据、模糊查询逻辑以及处理清除输入后的焦点问题。
摘要由CSDN通过智能技术生成

Element-ui官网

https://element.eleme.cn/2.13/#/zh-CN/component/installation

效果

需求

1.输入后下方显示输入建议

2.根据输入内容对建议列表进行模糊查询(范围为品名、别名、cas号三个字段)

实现

1.html代码

<el-autocomplete 
    clearable 
    class="handle-input-width" 
    v-model="appendForm.whpmc2" 
    value-key="value"
    :fetch-suggestions="FilterEntityName" 
    :trigger-on-focus="false" 
    placeholder="请输入危化品名称" 
    @clear="blurForBug()"
    @select="handleSelect" >    
</el-autocomplete>
:trigger-on-focus="false" //设置在输入内容后展示输入建议(默认鼠标选中就展示)

2.页面初始化的时候获取列表数据

 getNameList() {
      let data  = [
        {
          pm:'乙醚',
          bm:'yimi',
          cas:'2511'
        },
        {
          pm:'乙醇',
          bm:'yichun',
          cas:'5699'
        },
        {
          pm:'甲烷',
          bm:'jiawan',
          cas:'9899'
        },
        {
          pm:'乙醇',
          bm:'yichun',
          cas:'4633'
        },
      ]
      this.whpNameList= data.map((val) => {
        return {
          value: val.pm,
          pm:val.pm,
          bm:val.bm,
          cas:val.cas,
        };
      });
    },

element-ui规定项必须有value属性,否则显示不出来  

这里从后端接受的数据中如果没有这个字段可以用map加上,如果有就可以直接用

3.调用的方法

    // 危化品名称下拉框模糊查询
    FilterEntityName(queryString, cb) {
      var whpNameList2 = this.whpNameList;
      var results = queryString
        ? whpNameList2.filter(this.createFilter(queryString))
        : whpNameList2;
      cb(results);
    },
    // 模糊查询
    createFilter(queryString) {
      return (res) => {
        const pm = (res.pm.indexOf(queryString) !== -1)
        const cas = (res.cas.indexOf(queryString) !== -1)
        const bm = (res.bm.indexOf(queryString) !== -1)
        return (pm||cas||bm);
      };
    },
    // 最终选择的数据
    handleSelect(val) {
      this.appendForm.whpmc2 = val.value
    },
    blurForBug() {
      document.activeElement.blur()
    },

bug

上述代码中已经修复了关于clearabled的bug

bug复现

解决

    blurForBug() {
      document.activeElement.blur()
    },

每次点击清空后使输入框失去焦点

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值