zoukankan      html  css  js  c++  java
  • js实现模糊查询

    1、简述

    实现模糊查询方法有很多种,后端可以实现,前端使用js也可以实现。

    后端实现起来需要根据输入框中搜索的关键字,去后台拼接SQL语句查询。

    前端直接使用字符串的indexOf()方法或者正则表达式匹配实现,相比后端实现这种方法的用户体验更友好。

    2、demo

    当输入框中输入内容或者点击查询按钮时,

    根据输入框中的关键字,模糊查询下面表格的内容,并重新渲染表格。

    代码如下。

    (1)javascript代码:

    let listData = ["上海市","黄浦区","卢湾区","徐汇区","长宁区","静安区","普陀区",
      "闸北区","杨浦区","虹口区","闵行区","宝山区","嘉定区","浦东新区",
      "金山区","松江区","青浦区","南汇区","奉贤区","崇明县" ];
    
      
    function Fuzzysearch(listData){
    
      this.listData = listData,//请求得到的数据
      this.searchKey = document.getElementById('searchKey'),//查询关键字
      this.searchBtn = document.getElementById('searchBtn'),//查询按钮
      this.searchShow = document.getElementById('searchShow')//显示查询结果的表格
     
      this.renderTab(this.listData);
      this.init();
    }
    
    Fuzzysearch.prototype={
          init :function(){
            let _this = this;
              //键入触发事件
            _this.searchKey.onkeyup=function(){
                let searchResult = _this.searchFn();
                _this.renderTab(searchResult);
            };
    
          //点击查询按钮触发事件
            _this.searchBtn.onclick=function(){
                let searchResult = _this.searchFn();
                _this.renderTab(searchResult);
            };
    
    
          },
          searchFn:function(){
            var keyWord = this.searchKey.value;
            var len = this.listData.length;
            var arr = [];
            var reg = new RegExp(keyWord);
            for(var i=0;i<len;i++){
                //如果字符串中不包含目标字符会返回-1
                if(this.listData[i].match(reg)){
                    arr.push(listData[i]);
                }
            }
            return arr;
          }
          ,renderTab:function(list){
                let colStr = '';
                
                if(list.length==0){
                  this.searchShow.innerHTML='未查询到关键字相关结果';
                  return;
                }
                
                for(var i=0,len=list.length;i<len;i++){
                  colStr+="<tr><td>"+list[i]+"</td></tr>";
                }
                this.searchShow.innerHTML = colStr;
          }
    
    }
    
     new Fuzzysearch(listData);

    (2)html代码:

    <div class="wrap">
          <input type='text' value="" id='searchKey'/>
          <input type='button' value="查询" id='searchBtn'/>
          <table id='searchShow'></table>
      </div>

    (3)css代码:

     .wrap{50%;margin:0 auto;}
        #searchShow{font-size:12px;border:1px solid #ccc; border-collapse: collapse;margin-top:20px;}
        #searchShow td{border:1px solid #ccc;padding:4px 5px;}
        #searchShow tr:nth-child(even) {  
            background: hsl(180, 35%, 58%);  
            color: #fff;
        }  
        #searchShow tr:nth-child(odd) {  
            background: White;  
        } 

    3、运行效果

    4、源码下载

    https://github.com/lemonYU/fuzzySearch#fuzzysearch

    如果对您有帮助的话,记得帮我star哦(笔芯ღ( ´・ᴗ・` ))

    日益努力,而后风生水起。众生皆苦,你也不能认输O(∩_∩)O
  • 相关阅读:
    hdu2222 AC自动机入门
    bzoj1095: [ZJOI2007]Hide 捉迷藏 动态点分治学习
    【NOI2014】起床困难综合症 贪心
    bzoj1822: [JSOI2010]Frozen Nova 冷冻波网络流
    洛谷3767 膜法 带权并查集+分治
    NOI2015品酒大会 后缀数组
    NOI2015程序自动分析 并查集
    NOI2015软件包管理器 树剖线段树
    51nod1244 欧拉函数之和 杜教筛
    51nod1244 莫比乌斯函数之和 杜教筛
  • 原文地址:https://www.cnblogs.com/yingliyu/p/8668302.html
Copyright © 2011-2022 走看看