使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">     
          管理员
           <!--触发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">         
          角&nbsp;&nbsp;&nbsp;&nbsp;色
          <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>标签,所以选择也空

       效果图:

     图片 1

 

     现在自我而落实之是,在搜索栏中一律键称字符就点事件:动态获得后台数据来补加<option></option>标签;

   
 如今遇到的题材是,搜索栏是bootstrap-select控件生成的,无法先行知道怎么选该搜索栏以点发事件,

   
 解决措施是调用chrome的开发者模式,发现了bootstrap-select控件生成的竹签,如下图所示:

    

图片 2

   

 
  
解了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>

 

 

 
 效果使下图:

  图片 3

 

相关文章