vue 实现输入框的模糊查询

本文介绍了如何在Vue项目中实现输入框的模糊查询功能,提供了模板和脚本中的关键代码段,帮助开发者理解并应用到自己的项目中。

template里代码段: 

<div class="search-info">
        <el-input type="text" auto-complete="off" placeholder="请输入GroupName" v-model="searchVal"
        class="input"
        @focus="searchInput"></el-input>
        <el-button class="small-edit fl" @click="searchApp"> 搜索 </el-button>
</div>

script 里的代码段:

export default{
   data(){
     datas: [], //所有数据
     viewData: [], // 展示的数据
     searchVal: ''
   },
   created (){
      this.getData()
   }
   methods: {
      getData: function (){ //获取接口数据,渲染到页面表格
      },
      searchApp: function (){
         let self = this
         let dataList = [] //符合查找的数据
         this.datas.forEach( function (element) {
             if(element.name.indexOf(self.searchVal) !== -1) {
                 dataList.push(element)
             }
         })
         this.viewData = dataList
         return this.viewData
      },
      searchInput: function(){
         if(document.querySelector('input') == document.activeElement) {
            this.searchApp(this.searchVal.trim())
         }
      }
   },
   watch: {
      searchVal: function(){
          this.searchInput()
      }
   }
}

 

在这里再把之前普通html文件的输入框模糊查询给粘出来:

<body>
    <input id="inputv" placeholder="搜索...">
    <ul>
        <li>a</li>
        <li>a1</li>
        <li>a11</li>
        <li>a111</li>
        <li>a1111</li>
        <li>b</li>
        <li>b1</li>
        <li>b11</li>
        <li>b111</li>
        <li>b1111</li>
        <li>c</li>
        <li>c1</li>
        <li>c11</li>
        <li>c111</li>
        <li>c1111</li>
    </ul>

    <script>
        var inputBtn = document.getElementById("inputv");
        var li = document.getElementsByTagName('li');
        inputBtn.onkeyup = search; //监听按键
        function search(){
            var inputMsg = inputBtn.value; //string
            for(var i = 0; i < li.length; i++){
                var liMsg = li[i].innerHTML; //string
                var macthStr = liMsg.indexOf(inputMsg);
                if(inputMsg != 0){
                    if(macthStr){
                        li[i].style.display = "block";
                    }else{
                         li[i].style.display = "none";
                    }
                }
            }
        }
    </script>
</body>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值