视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于jQuery使用Ajax动态执行模糊查询功能
2020-11-27 22:11:50 责编:小采
文档


使用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" 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动态执行模糊查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

下载本文
显示全文
专题