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


Posted in jQuery onJuly 05, 2018

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

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

说明:

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

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

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

效果展示:

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

引用三方功能模块:

<!--jquery-->
 <script src="assets/scripts/jquery.js" type="application/javascript"></script>
 <link rel="stylesheet" href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="external nofollow" >
 <!--layui-->
 <link rel="stylesheet" href="assets/vendor/layui/css/layui.css" rel="external nofollow" >
 <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>

总结

以上所述是小编给大家介绍的基于jQuery使用Ajax动态执行模糊查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
jQuery中map函数的两种方式
Apr 07 jQuery
jquery append与appendTo方法比较
May 24 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
使vue实现jQuery调用的两种方法
May 12 jQuery
jQuery实现简单弹幕效果
Nov 28 jQuery
jQuery实现炫丽的3d旋转星空效果
Jul 04 #jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 #jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 #jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 #jQuery
jQuery阻止事件冒泡实例分析
Jul 03 #jQuery
jQuery实现模糊搜索功能的方法分析
Jun 29 #jQuery
jQuery实现获取动态添加的标签对象示例
Jun 28 #jQuery
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
php实现的顺序线性表示例
2019/05/04 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
Vue中props的详解
2019/05/16 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python进阶教程之异常处理
2014/08/30 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
nohup的用法
2012/11/26 面试题
实习期自我鉴定
2013/10/11 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
入股协议书范本
2014/11/01 职场文书
保卫工作个人总结
2015/03/03 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
python基于tkinter制作下班倒计时工具
2021/04/28 Python
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers