基于Bootstrap下拉框插件bootstrap-select使用方法详解


Posted in Javascript onAugust 07, 2018

写在前面:

在这次的项目中,没有再使用liger-ui做为前端框架了,改为了Bootstrap,这次也好接触下新的技术,在学习的过程中发现,Bootstrap的一些组件基本都是采用class的形式,就是给一个它定义好的样式,就会给你展现出一个好看的组件出来,这个比liger-ui的界面做的要好,但是了解了Boostrap的基本语法后,发现在官方的文档中,并没有一些可以动态加载组件的demo,因为之前用的liger-ui,大多数组件都只需要写一行代码,就能很好的,并且很方便的直接与后台进行交互,并动态加载数据。但是bootstrap的文档中并没有这样的例子。毕竟它就是做静态的,只需要给一个样式,那我动态加载数据怎么办?全部自己封装吗?后面查阅资料发现,有许多常用的组件插件是基于bootstrap来进行封装的,这就需要我们如果要使用什么组件,可以单独的再去下载它的插件。这个时候,就可以做到很方便的像后台发送数据进行动态加载了。这里就记录下,一些常用的bootstrap的组件插件吧,首先是下拉框。

基于Bootstrap的下拉框也有好几个,这里我选择了bootstrap-select.js.下面就简单的记录下它的用法吧,主要是动态的加载数据。

首先还是上代码,毕竟代码最直观。

前台jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
 String scheme = request.getScheme();
 String serverName = request.getServerName();
 String contextPath = request.getContextPath();
 int port = request.getServerPort();

 //网站的访问跟路径
 String baseURL = scheme + "://" + serverName + ":" + port
  + contextPath;
 request.setAttribute("baseURL", baseURL);
 System.out.println("baseURL:" + baseURL);
%>

<html>
 <head>
 <meta name="viewport" content="width=device-width" />
 <title>bootstrap-select测试</title>
 <%--导入bootstrap与select样式--%>
 <link rel="stylesheet" type="text/css" href="${baseURL}/Bootstrap/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" />
 <link href="${baseURL}/Bootstrap/bootstrap-select/css/bootstrap-select.css" rel="stylesheet" />
 <%--先导入jqury插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap/assets/js/jquery-1.10.2.min.js"></script>
 <%--导入bootstrap插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap/assets/js/bootstrap.min.js"></script>
 <%--下拉框插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap-select/js/bootstrap-select.js"></script>
 </head>
 <body>

 <label style="font-weight:normal;background-color: #fac090;width: 80px;text-align: center" >Role</label>
 <%--给一个class=“selectpicker” 改变下拉框的宽度用data-width --%>
 <select id="sel_role" name="role" class="selectpicker" title="请选择" data-width="150px" style="">
 </select>
 </body>
<script>
 $(function(){
 //初始化下拉框
 //动态加载
 $.ajax({
  type: 'get',
  url: '${baseURL}/listAllRole',
  dataType: "json",
  success: function (data) {
  //拼接下拉框
  for(var i=0;i<data.length;i++){
   $("#sel_role").append("<option value='"+data[i].roleId+"'>"+data[i].roleName+"</option>");
  }
  //这一步不要忘记 不然下拉框没有数据
  $("#sel_role").selectpicker("refresh");
  }
 });
 
 });
</script>
</html>

首先要导入相关的样式以及js插件,由于bootstrap是基于jquery的,故要先导入jquery插件,然后bootstrap-select又是基于bootstrap的。故先导入bootstrap,再导入bootstrap-select.这里要注意下导入的顺序呢。

对于动态的加载数据,还是要自己进行拼接,然后refresh一下,这个一定不能忘记,不然不会出来数据。由于此次的后台还是ssh框架,故后台查询下拉框的数据,并如何返回json给前台页面,这里就不再详细的说了,之前在ligerui博文中都有写过,并提及过。

看下效果图吧:

基于Bootstrap下拉框插件bootstrap-select使用方法详解

除了常用的单个下拉框外,还有最常见的就是下拉框级联了,这里也写个demo来记录一下,代码如下,也是只上前台jsp页面的代码,后台json数据的传递就不再说了。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
 String scheme = request.getScheme();
 String serverName = request.getServerName();
 String contextPath = request.getContextPath();
 int port = request.getServerPort();
 //网站的访问跟路径
 String baseURL = scheme + "://" + serverName + ":" + port
  + contextPath;
 request.setAttribute("baseURL", baseURL);
 System.out.println("baseURL:" + baseURL);
%>
<html>
 <head>
 <meta name="viewport" content="width=device-width" />
 <title>bootstrap-select测试</title>
 <%--导入bootstrap与select样式--%>
 <link rel="stylesheet" type="text/css" href="${baseURL}/Bootstrap/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" />
 <link href="${baseURL}/Bootstrap/bootstrap-select/css/bootstrap-select.css" rel="stylesheet" />
 <%--先导入jqury插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap/assets/js/jquery-1.10.2.min.js"></script>
 <%--导入bootstrap插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap/assets/js/bootstrap.min.js"></script>
 <%--下拉框插件--%>
 <script src="${baseURL}/Bootstrap/bootstrap-select/js/bootstrap-select.js"></script>
 </head>
 <body>

 <label style="font-weight:normal;background-color: #fac090;width: 80px;text-align: center" >Biz Unit</label>
 <select id="sel_bizUnit" name="bUnitId" class="selectpicker" title="请选择" data-width="150px" style="">
 </select>
    
 <label style="font-weight:normal;background-color: #fac090;width: 80px;text-align: center" >Division</label>
 <select id="sel_division" name="divId" class="selectpicker"title="请选择" data-width="150px" style="">
 </select>

 </body>
<script>
 $(function(){
 //初始化下一级下拉框
 //动态加载
 $.ajax({
  type: 'get',
  url: '${baseURL}/listAllSABusinessUnit',
  dataType: "json",
  success: function (data) {
  for(var i=0;i<data.length;i++){
   $("#sel_bizUnit").append("<option value='"+data[i].bUnitId+"'>"+data[i].bUnitName+"</option>");
  }
  $("#sel_bizUnit").selectpicker("refresh");
  }
 });

 //二级下拉框的选项随一级下拉框的值而改变
 $("#sel_bizUnit").change(function(){
  //根据bUnit去获取Division
  $.ajax({
  type: 'get',
  url: '${baseURL}/getSADivisionByBUnit?bUnitId='+$("#sel_bizUnit").val(),
  dataType: "json",
  success: function (data) {
   if(data.length == 0){
   //如果一级没有对应的二级 则清空二级并 不往下执行
   $("#sel_division").empty();
   $("#sel_division").selectpicker("refresh");
   return ;
   }
   //如果一级有对应的二级 则进行拼接
   //每次拼接前都进行清空
   $("#sel_division").empty();
   for(var i=0;i<data.length;i++){
   $("#sel_division").append("<option value='"+data[i].divId+"'>"+data[i].divName+"</option>");
   }
   //这里千万别忘记了
   $("#sel_division").selectpicker("refresh");
  }
  });
 });
 });
</script>
</html>

代码都比较简单,基本看下就会了,也就是根据一级下拉框的值去查询获取对应的二级下拉框的值,然后拼接加载出来就完事了。值得注意的点,当一级没有对应的二级时,此时也应该将二级清空并refresh一下,不然当第一次勾选一级a,对应有二级,接着再次选择一级b,没有对应的二级时,还是会显示出一级a对应的二级。所以这个时候也应该清空一下。这些小细节可以按照自己的项目需求来。看下效果图:

基于Bootstrap下拉框插件bootstrap-select使用方法详解

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
记录几个javascript有关的小细节
Apr 02 Javascript
过虑特殊字符输入的js代码
Aug 05 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
详解Angularjs中的依赖注入
Mar 11 Javascript
浅析JavaScript中的array数组类型系统
Jul 18 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 #Javascript
详解如何在vue-cli中使用vuex
Aug 07 #Javascript
React styled-components设置组件属性的方法
Aug 07 #Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 #Javascript
详解vue axios用post提交的数据格式
Aug 07 #Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 #Javascript
使用Nuxt.js改造已有项目的方法
Aug 07 #Javascript
You might like
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
再论Javascript的类继承
2011/03/05 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
node.js基于express使用websocket的方法
2017/11/09 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python编写Windows Service服务程序
2018/01/04 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
浅析python内置模块collections
2019/11/15 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015迎新晚会开场白
2015/07/17 职场文书