智能搜索(输入关键字模糊查询)

版权声明:转载请注明出处!!谢谢!! https://blog.csdn.net/weixin_43474398/article/details/91378258

最近项目里用到,特记录一下。自己修改下可连接数据库。

前端html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src='js/jquery-1.8.3.min.js' th:src="@{/asserts/js/jquery-1.8.3.min.js}"></script>
    <script src='js/jquery.min.js' th:src="@{/asserts/js/jquery.min.js}"></script>
    <title>js实现模糊查询</title>
    <style>
        .wrap{width: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;
        }
    </style>
</head>
<body>
<div class="wrap">
    <input type='text' value="" id='searchKey'/>
    <input type='button' value="查询" id='searchBtn'/>
    <table id='searchShow'></table>
</div>

</body>
<script src="js/jquery.min.js"></script>
<script>
    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);
</script>
<html>

另外一个模型 html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src='js/jquery-1.8.3.min.js' th:src="@{/asserts/js/jquery-1.8.3.min.js}"></script>
    <script src='js/jquery.min.js' th:src="@{/asserts/js/jquery.min.js}"></script>
    <title>js实现模糊查询</title>
    <style>
        .wrap{width: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;
        }
    </style>
</head>
<body>
<div class="wrap" id="wrap">
    <input type='text' value="" id='searchKey'/>
    <input type='button' value="查询" id='searchBtn'/>
    <table id='searchShow'></table>
</div>

</body>
<script src="js/jquery.min.js"></script>
<script>
     let listData = ["上海市","黄浦区","卢湾区","徐汇区","长宁区","静安区","普陀区",
        "闸北区","杨浦区","虹口区","闵行区","宝山区","嘉定区","浦东新区",
        "金山区","松江区","青浦区","南汇区","奉贤区","崇明县" ];
    renderTab(listData);//渲染表格

    //加载本地数据
     $.ajax({
    		  type    : "get",
     		  url     : "data.json",
     		  success : function(json){
     					console.log(json);
              listData = json;
               renderTab(listData);//渲染表格
     		  }
      });
    //键入触发事件
    $('#searchKey').keyup(function(){
        var searchResult = fuzzySearch();
        renderTab(searchResult);
    });
    //点击查询按钮触发事件
    $('#searchBtn').click(function(){
        var searchResult = fuzzySearch();
        renderTab(searchResult);
    });
    // 正则表达式实现模糊查询
    function fuzzySearch(){
        var keyWord = $('#searchKey').val();
        var len = listData.length;
        var arr = [];
        var reg = new RegExp(keyWord);
        for(var i=0;i<len;i++){
            //如果字符串中不包含目标字符会返回-1
            if(listData[i].match(reg)){
                arr.push(listData[i]);
            }
        }
        return arr;
    }
    //渲染表格
    function renderTab(list){
        if(list.length==0){
            $('#searchShow').html('未查询到关键字相关结果');
            return;
        }
        var colStr = '';
        for(var i=0,len=list.length;i<len;i++){
            colStr+="<tr><td>"+list[i]+"</td></tr>";
        }
        $('#searchShow').html(colStr);
    }
</script>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_43474398/article/details/91378258