使用bootstrap-select控件 搜索栏键入关键字动态获取后台数据
bootstrap-select开源地址:https://github.com/silviomoreto/bootstrap-select
bootstrap-select使用示例:http://silviomoreto.github.io/bootstrap-select/examples/
bootstrap-select文档说明:http://silviomoreto.github.io/bootstrap-select/options/
bootstrap-select使用参考博客:http://www.cnblogs.com/landeanfen/p/7457283.html
该控件依赖于Bootstrap前端框架;
该控件的具体用法请看上述链接;
该控件其中的一个用法是可以对select标签的选项进行搜索,从而获得精准的选项,毕竟选项可能很多;
如今我想通过在搜索栏键入关键字,动态获得后台传入的选项数据,而不是一次性读取所有数据再进行搜索;
具体实现如下:
1、引入相关文件:
<head>
<!-- 引入 Bootstrap样式 -->
<link href="${pageContext.request.contextPath}/resources/css/bootstrap.min.css" rel="stylesheet">
<!-- bootstrap-select样式 -->
<link href="${pageContext.request.contextPath}/resources/css/select/bootstrap-select.min.css" rel="stylesheet"> <!-- jQuery (Bootstrap 依赖于 jQuery) -->
<script src="${pageContext.request.contextPath}/resources/js/jquery-3.0.0.min.js"></script>
<!-- Bootstrap -->
<script src="${pageContext.request.contextPath}/resources/js/bootstrap.min.js"></script> <!-- Bootstrap-select 控件 -->
<script src="${pageContext.request.contextPath}/resources/js/select/bootstrap-select.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/select/defaults-zh_CN.min.js"></script> </head>
2、select标签
<form id="addForm" action="${pageContext.request.contextPath}/admin/authority/manager/saveAdd" method="post">
   <div class="form-group">
       <div class="input-group">
          <span class="input-group-addon" >管理员</span>
           <!--触发bootstrap-select需添加class="selectpicker" 搜索功能需添加data-live-search="true" -->
          <select data-size="6" class="form-control selectpicker show-tick" data-live-search="true" title="请输入管理员"  id="select-manager" name="managerName"                data-selectNameUrl="${pageContext.request.contextPath}/admin/authority/managerRole/getManagerByName" >
          </select>
       </div>
   </div>
   <div class="form-group">
       <div class="input-group">
          <span class="input-group-addon" >角    色</span>
          <select  class="form-control selectpicker show-tick" data-size="6" data-live-search="true"  id="select-role"  name="roleName" title="请选择角色" >
             <c:forEach var="selectRole" items="${selectRoles}" varStatus="statu">
                <option    value ="${selectRole.id}"  >${selectRole.roleName}</option>
             </c:forEach>
          </select>
       </div>
   </div>
</form>
到这步为止,管理员的select标签下,我没有添加任何的<option></option>标签,所以选项为空
效果图:
     
现在我要实现的是,在搜索栏中一键入字符就触发事件:动态获得后台数据来添加<option></option>标签;
如今遇到的问题是,搜索栏是bootstrap-select控件生成的,无法事先知道怎么选择该搜索栏以触发事件,
解决方法是调用chrome的开发者模式,发现了bootstrap-select控件生成的标签,如下图所示:

知道了bootstrap-select 生成的搜索栏相关标签和属性,就可以通过选择该搜索栏触发事件;
3、触发事件:
  <script type="text/javascript">
         $().ready(function(){
               //键入字符触发事件:动态获得后台传入select选项数据 
              //请求的url
              var selectNameUrl = $("#select-manager").attr("data-selectNameUrl");
              //选择得到搜索栏input,松开按键后触发事件
              $("#select-manager").prev().find('.bs-searchbox').find('input').keyup(function () {
                  //键入的值
                  var inputManagerName =$('#addForm .open input').val();
                  //判定键入的值不为空,才调用ajax
                  if(inputManagerName != ''){
                      $.ajax({
                            type: 'Get',
                            url: selectNameUrl,
                            data: {                     //传递到后台的值
                                managerName: inputManagerName
                            },
                            dataType: "Json",
                            success: function (Selectmanagers) {
                                //清除select标签下旧的option签,根据新获得的数据重新添加option标签
                                $("#select-manager").empty();
                                if (Selectmanagers != null) {
                                    $.each(Selectmanagers, function (i,Selectmanager) {
                                        $("#select-manager").append(" <option value=\"" + Selectmanager.id + "\">" + Selectmanager.managerName + "</option>");
                                    })
                                    //必不可少的刷新
                                    $("#select-manager").selectpicker('refresh');
                                }
                            }
                      })
                  }else
                      //如果输入的字符为空,清除之前option标签
                      $("#select-manager").empty();
                      $("#select-manager").selectpicker('refresh');
              });
         });
  </script>
效果如下图:

使用bootstrap-select控件 搜索栏键入关键字动态获取后台数据的更多相关文章
- ADO.NET之使用DataGridView控件显示从服务器上获取的数据
		
今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...
 - jquery 双向select控件bootstrap Dual listbox
		
http://www.cnblogs.com/hangwei/p/5040866.html -->jquery 双向select控件bootstrap Dual listboxhtt ...
 - vue和bootstrap的select控件貌似有冲突?
		
貌似vue和bootstrap的select控件会冲突,因为bootstrap的select控件会将option替换为<a>标签,这样就会导致vue渲染失败.(这个问题让我整了一个上午,最 ...
 - 解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
		
[本文出自天外归云的博客园] 在使用bootstrap-table的extension——filter-control时(对应表格的data-filter-control="true&quo ...
 - SELECT控件操作的JS代码示例
		
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
 - HTML的select控件美化
		
HTML的select控件美化 CSS: .div-select { border: solid 1px #999; height: 40px; line-height: 40px; cursor: ...
 - IE6下div层被select控件遮住的问题解决方法
		
Select在IE6下是处于最顶层的,因此想要遮住它,设置zIndex属性是不行的,就需要一个优先级更高的元素,就是iframe,当把iframe嵌套在弹出div层中后,把iframe设置为不可见,但 ...
 - .net获取select控件中的文本内容
		
.net获取select控件中的文本内容 2009-11-28 21:19小V古 | 分类:C#/.NET | 浏览1374次 <select id="SecType" st ...
 - Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html
		
Jquery 操作Html 控件 CheckBox.Radio.Select 控件 在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio ...
 
随机推荐
- Oracle EBS 配置文件取值
			
SELECT op.profile_option_id, tl.profile_option_name, tl.user_profile_option_name, lv.level_id, lv.文件 ...
 - 通过runtime获取对象相关信息
			
通过runtime获取对象相关信息 在这里,本人给大家提供一个runtime关于NSObject的扩展,用来显示各种NSObject中的信息,这有助于你来分析类的组成:) 先准备以下类供测试: Mod ...
 - 解析UIControl
			
解析UIControl 从下图可以看出,UIControl继承自UIView,添加了响应事件功能. UIButton之所以能响应各种各样的事件是因为继承自UIControl 使用UIControl可以 ...
 - 模板(template)包含与继承
			
Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找). ...
 - Redis学习---基础学习[all]
			
什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...
 - php面试题2018
			
一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...
 - CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
			
深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...
 - C++实现一个Vector3空间向量类(转)
			
转自:http://www.2cto.com/kf/201311/260139.html ector2,3,4类在DirectX中都有现成的可以调用,不过要实现其中的功能其实也不难,也都是一些简单的数 ...
 - (转)图形学理论知识 BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)
			
BRDF理论 BRDF表示的是双向反射分布函数(Bidirectional Reflectance Distribution Function),它描述了光线如何在物体表面进行反射,可以用来描述材质属 ...
 - Aria2 无限制下载神器
			
Aria2 是一款免费开源跨平台且不限速的多线程下载软件,Aria2的优点是速度快.体积小.资源占用少:支持 HTTP / FTP / BT / Magnet 磁力链接等类型的文件下载:支持 Win. ...