基于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 相关文章推荐
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
javascript arguments使用示例
Dec 16 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
js编写一个简单的产品放大效果代码
Jun 27 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
纯JS实现轮播图
Feb 22 Javascript
windows下vue.js开发环境搭建教程
Mar 20 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
详解vue 组件之间使用eventbus传值
Oct 25 Javascript
JavaScript实现与使用发布/订阅模式详解
Jan 19 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 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
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
vue debug 二种方法
2018/09/16 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
简单了解django索引的相关知识
2019/07/17 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
用python解压分析jar包实例
2020/01/16 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
个人简历中的自我评价范例
2013/10/29 职场文书
迎接领导欢迎词
2014/01/11 职场文书
公司年会策划方案
2014/05/17 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
努力工作保证书
2015/02/28 职场文书
复兴之路观后感
2015/06/02 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python