前端vue2实现模糊查询

这里写自定义目录标题

纯前端vue2实现模糊查询

最近 在项目中要实现纯前端实现模糊查询 但是项目比较老 所以使用自己画一个 然后用一些基本的事件实现 画不多说上代码

Html

<input style="width:4rem" v-model="searchQuery" @focus="performSearch" @input="performSearch1" placeholder="输入进行模糊查询" @blur="clearInput">
        <ul v-if="filteredOptions.length > 0"  class="dropdown" style="position: absolute;margin-left: 0.82rem;width: 3.99rem;height: 200px; background: #fff; z-index:99999;overflow-y: scroll;position: absolute;top: 19px;box-shadow: 3px 3px 2px rgb(0 0 0 / 12%);border-left: 1px solid;">
            <li v-for="option in filteredOptions" @click="selectOption(option)" @mousedown.prevent @mouseup.prevent>{{ option.name }}</li>
        </ul>

完整代码

data中定义如下变量

searchQuery: '',
filteredOptions: [],

使用focus 聚焦是查询所有 @input 输入是也进行查询 @blur失焦时 关闭模糊查询框
###方法如下

performSearch: function() {
  let query = this.searchQuery;
  console.log(this.ListArrary);//确保从后端获取到数据 
    this.filteredOptions = this.ListArrary.filter(item => {
          return item.name;
        });
},
performSearch1: function() {
  const query = this.searchQuery;
    this.isShowul=true;
    this.filteredOptions = this.ListArrary.filter(item => {
          return item.name.includes(query);
        });
},
selectOption: function(option) {
       this.searchQuery = option.name;
      this.Org=option.value//码值赋值  实际是用码值进行的查询
      this.getchaxunData()//调取接口实现查询
      this.filteredOptions = [];
},
clearInput: function() {
        setTimeout(() => {
            const inputElement = this.$refs.input;
            const dropdownElement = this.$el.querySelector('.dropdown');
            let activeElement = document.activeElement;
            let isInsideInputOrDropdown = false;
            while (activeElement) {
              if (activeElement === inputElement || (dropdownElement && dropdownElement.contains(activeElement))) {
                isInsideInputOrDropdown = true;
                break;
              }
              activeElement = activeElement.parentNode;
            }
            if (!isInsideInputOrDropdown) {
              this.filteredOptions = [];
            }
          }, 100);
}, 

代码在谷歌可以正常运行 但是发现在IE浏览器 中 写的固定高度 但是内容溢出 overflow 等都没有生效 待解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值