基于jQuery的使用Ajax动态执行模糊查询功能

使用Ajax动态执行模糊查询功能

  • 必须:需要一个执行查询的接口:

说明:

1.搜索模块仅仅使用了boostrap的样式以及Jquery.js文件

2.因为我使用的layui的弹出层里面做的搜索ifram,所以确定和取消按钮的关闭当前页面的功能都是layui的方式,如果不是ifram的窗口仅仅在当前窗口执行的情况下,可以使用下面的语句来进行关闭当前页面的操作:

    window.opener=null;
    window.open('','_self');
    window.close();

效果展示:

引用三方功能模块:

    <!--jquery-->
    <script src="assets/scripts/jquery.js" type="application/javascript"></script>
    <link rel="stylesheet" href="assets/vendor/bootstrap/css/bootstrap.min.css">
    <!--layui-->
    <link rel="stylesheet" href="assets/vendor/layui/css/layui.css">
    <script type="application/javascript" src="assets/vendor/layui/layui.js"></script>

样式:

    <style>
        /*html {
            -ms-overflow-style:none;
            overflow:-moz-scrollbars-none;
        }
        html::-webkit-scrollbar{width:0px}*/
        #select_template_group{
            position: fixed;
            float: left;
            display: none;
        }
        .selected_keywords{
            display: none;
            position: fixed;
            width: 590px;
            max-height: 300px;
            margin-top: 35px;
            z-index: 10002;
        }
        .selected_keywords > ul{
            max-height: 300px;
            min-width: 590px;
            display: inline-block;
            overflow-y: scroll;
            overflow-x: hidden;
        }
        .list-group-item:hover{
            color: #2E2D3C;
            background: #00AAFF;
        }
        #basic-addon1 > img{
            width: 80%;
            height: 80%;
        }
    </style>

HTML代码:

    <body>
        <!-- WRAPPER -->
        <div id="wrapper">
            <!-- NAVBAR -->
            <div id="nav"></div>
            <!-- END NAVBAR -->
            <!-- END LEFT SIDEBAR -->
            <!-- MAIN -->
            <div class="main">
                <!-- MAIN CONTENT -->
                <div class="main-content">
                    <div class="container-fluid" style="width: 700px;">
                        <div class="form-horizontal">
                            <!--查询位置-->
                            <div class="input-group" id="">
                                <span class="input-group-addon" id="sizing-addon2">选择模版</span>
                                <input type="text" class="form-control" placeholder="选择模版,支持模糊查询" aria-describedby="sizing-addon2" id="fuzzy_search" oninput="template_choise(this)">
                                <!--搜索结果显示-->
                                <div class="input-group selected_keywords"></div>
                            </div>
                            <!--展示位置-->
                            <div class="panel panel-primary">
                                <div class="panel-heading">
                                    <h4 class="panel-title">已选择模版</h4>
                                </div>
                                <div class="panel-body" id="results_2"></div>
                            </div>
                            <!--功能按钮-->
                            <div class="form-group" style="float: left;margin-left: 25%">
                                <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-default" onclick="tsg_confirm()">确认</button>
                                </div>
                            </div>
                            <div class="form-group" style="float: left;margin-left: 30px">
                                <div class="col-sm-offset-2 col-sm-10">
                                    <button type="submit" class="btn btn-default" onclick="tsg_cancle()">取消</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <!-- END MAIN CONTENT -->
            </div>
            <!-- END MAIN -->
        </div>
        <!-- END WRAPPER -->
    </body>
    </html>

Javascript代码:

        <script>
            //点击空白区域隐藏搜索结果内容
            $(document).click(function(e){
                var _con = $('.selected_keywords');   // 设置目标区域
                if(!_con.is(e.target) && _con.has(e.target).length === 0){ // Mark 1
                    // todo
                    $(".selected_keywords").css("display","none")
                }
            });



            // 搜索选择功能
            function template_choise(obj) {
                // console.log($(obj).val().length)
                // 判断输入框内容为空的时候
                if ($(obj).val().length == 0){
                    $(".selected_keywords").css("display","none")
                    var selected_keywords = $(".selected_keywords")
                    selected_keywords.empty()
                }
                else {
                    //获取setinterval的索引
                    var index = window.setInterval(function () {
                        // 获取输入框中的搜索关键字
                        var serach_keywords = $(obj).val()
                        var list_template = "<ul class='list-group'></ul>"
                        //执行模糊查询功能,延迟200ms
                        $.ajax({
                            type: "POST",
                            url: "/admin/tsg_fuzzy_search",
                            data: {
                                "keywords": serach_keywords
                            },
                            dataType: "json",
                            success: function (data) {
                                $(".selected_keywords").css("display", "block")
                                $(".selected_keywords").html(list_template)
                                $(".list-group").empty()
                                var code = data["code"]
                                var data = data["data"]

                                //判断是否存在搜索结果
                                if(code == "000000") {
                                    $.each(data, function (i, data) {
                                        var data_complte = data["template_rule_name"] + "," + data["template_name"] + "," + data["template_desc"]
                                        var html_style = "<a href='javascript:'><li class='list-group-item' onclick='choise_one_template(this)'>" + data_complte + "</li></a>"
                                        $(".list-group").append(html_style)
                                    })
                                }
                                else if(code == "200000"){
                                    $(".list-group").append("<li class='list-group-item'>没有找到合适的结果</li>")
                                }

                                //清除当前interval
                                window.clearInterval(index)
                            },
                            fail: function () {
                                alert("查询失败")
                            }

                        })
                        //    延时200ms
                    }, 200)
                }
            }

            //添加选择的模版到展示栏
            function choise_one_template(obj) {
                //获取选择的值
                var template_data = $(obj).text()
                //拆分获取的数据
                var selected_template = template_data.split(",")
                //获取指定的数据
                selected_template = selected_template[1]
                // console.log(selected_template)

                //制作html
                var selected_template_html = "<button type='button' class='btn btn-default template_data' aria-label='Left Align'><span class='glyphicon glyphicon-remove' aria-hidden='true' onclick='delete_template(this)'></span>  "+selected_template+"</button>"

                //在指定div内插入html
                $("#results_2").append(selected_template_html)
            }

            //删除当前已选择的template
            function delete_template(obj) {
                //获取选择的值数据
                var template_data_selected = $(obj).text()
                console.log(template_data_selected)
                //获取当前删除的html内容
                var father_button_html = $(obj).closest("button")
                //从指定容器中删除该内容
                father_button_html.remove()
            }

            //关闭当前ifram
            function tsg_cancle(){
                layui.use('layer', function() {
                    var layer = layui.layer
                    layer.confirm('您确定要关闭本页吗?', {icon: 3, title: '您确定要关闭本页吗?'}, function (index) {
                        //清除已选择的模版信息
                        // localStorage.removeItem("selected_template_data")
                        //清除已排序的模板信息
                        localStorage.removeItem("template_data_sorted")
                        var layer = layui.layer;
                        var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                        parent.layer.close(index); //再执行关闭
                        layer.close(index);
                    })
                })
            }
            //确认按钮=提交
            function tsg_confirm() {
                var selected_template_datas = []
                $(".template_data").each(function (i,element) {
                    selected_template_datas[i] = $(element).text()
                })
                localStorage.setItem("template_data_sorted",selected_template_datas)
                layui.use('layer', function() {
                    var layer = layui.layer
                    var layer = layui.layer;
                    var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                    parent.layer.close(index); //再执行关闭
                    layer.close(index);
                })
                //刷新父页面
                parent.location.reload()
            }
            }
            }
        </script>

猜你喜欢

转载自blog.csdn.net/carolcoral/article/details/80910521