基于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.dotdotdot.js使用方法详解
Jun 22 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
JQuery 选择器、DOM节点操作练习实例
Sep 28 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
jQuery实现模糊查询的方法分析
May 10 jQuery
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 jQuery
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
如何基于jQuery实现五角星评分
Sep 02 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
PHP SEO优化之URL优化方法
2011/04/21 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
新郎父亲婚宴答谢词
2014/01/11 职场文书
绩效工资实施方案
2014/03/15 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
学生检讨书范文
2014/10/30 职场文书
党校毕业个人总结
2015/02/28 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android