Bootstrap Multiselect 常用组件实现代码


Posted in Javascript onJuly 09, 2017

实际的项目网站中或多或少的或用到多选框,我选用的一款是 Bootstrap Multiselect。

    官方文档:http://www.kuitao8.com/demo/20140224/1/bootstrap-multiselect-master/index.html

    如果你英文好一点,里面有详细的介绍,多选框的设置,多选框获取值/文本,选项分组,各种各样丰富的表现方式和获取。

    结合实际项目,加深技术理解,同时也方便自己后续项目中的使用。

    多选框和单选框相同,实际项目中前端不可能将里面的选项很直白的写在展示层面,或多都是取自数据库中的代码表。

    这样耦合低,便于维护;当需要展示的选项发生变化的时候,只需要变更一遍数据库就好,不需要每个页面修改,假如有100个页面放置了单选框或者多选框,画面太惨了。

    动态生成 多选框/单选框 方式我接触的写法有两种,具体好坏,效率问题,仁者见仁智者见智。

    程序设计方式多种多样,看客老爷肯定知道比我这样写更好的,不多说了,上代码。

1.JavaBean 方式,在JSP 页面,嵌入java 代码实现             

<div class="input-append">
          <span class="add-on">bootstrapMultiselect</span><select class="multiselect" multiple="multiple">
          <% for(int i=0;i<list.size();i++){
            Product product = list.get(i);%>
          <option value='<%=product.getId() %>'><%=product.getName() %></option>
          <% } %>
          </select>
        </div>

a.product 定义的基本的属性和 setter 和 getter 是一个纯粹的 pojo 对象;

b.具体的 product 对象的读取,涉及与数据交互,封装方法的数据结构可以使用很多(包括数组、map、list),我这里使用的是 ArrayList<Product>;

c.如果想实现的更合理一点,可以定义数据库访问接口,里面定义各种各样对操作 product 的方法(增,删,改,查....),然后由另外一个类实现这些接口的方法(貌似扯远了,等有时间在说吧);

2.后台数据库交互,前台 JavaScript 动态添加选项

  依赖的具体的 WebMVC 框架为 SpringMvc.

  前台 ajax 请求以及动态生成选项:

$.ajax({
   url : "/" + window.location.pathname.split("/")[1] + '/service/product/init',
   type : 'POST',
   dataType : 'json',
   success : function(data) {
     if (data.success) {
       /**
        * Bootstrap Multiselect 动态赋值选项卡 1 
        */
       var products = data.products;
       $.each(products, function(index, product) {        
         $("#product").append('<option value="' + product.id + '">' + product.name + '</option>');
       });
       /**
        * Bootstrap Multiselect 动态赋值选项卡 2
        */
       var products = data.products;
       var newProducts = new Array();
       var obj = new Object();
       $.each(products, function(index, product) {
         obj = {
           label : product.id,
           value : product.name
         };
         newProducts.push(obj);
       });
        $(".multiselect").multiselect('dataprovider', newProducts);   
     }
   }
 });

 a. 第一种方法去赋值时需要注意的时,多选框要在前面先初始化;

 b. 然后在官方文档的帮助下,找到了第二种方法,需要用到一个 Array,还有一个万能的 object,将后台返回回来的数据封装给object ,然后将object 放入 Array中,最后赋值给多选框;

 c. 后台交互需要一个简单的 sql ,SpringMvc 会将返回回去的 map,转换为 javascript Object 对象, list 转换为 Array 对象;

 d.多选框提交到后台值,你可以选择提交选项文本,选项对应的值,提交选项 code 有优势,具体为code 一般为数字或者字母,而文本一般是汉字,会导致post 到后台的内容过大,需要进行转码,code 在代码表中是唯一的,还有安全性较高;

 e.后台具体的解析方法如下,我项目中具体是进行查询,所以拼接为一个 sql 子句,解析后当然也可以用来更新数据库;           

if(!cxxxjo.getString("product").equals("null") && cxxxjo.getString("product").length() > 0){
          JSONArray productja = JSONArray.fromObject(cxxxjo.getString("product"));
            wherestr += " and t.product in(";
            for(int i = 0;i < productja.size();i++){
              if(i == productja.size()-1){
                wherestr += "'" + productja.get(i).toString()+"'";
              }else{
                wherestr += "'" + productja.get(i).toString()+"',";
              }
            }
            wherestr+=")";
        }

总结

以上所述是小编给大家介绍的Bootstrap Multiselect 常用组件实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
模仿JQuery sortable效果 代码有错但值得看看
Nov 05 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
Apr 24 Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
原生js实现网易轮播图效果
Apr 10 Javascript
JS/CSS实现字符串单词首字母大写功能
Sep 03 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 Javascript
Vue实现计算器计算效果
Aug 17 Javascript
vue递归实现树形组件
Jul 15 Vue.js
解决JS外部文件中文注释出现乱码问题
Jul 09 #Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 #Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 #jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 #jQuery
详谈javascript精度问题与调整
Jul 08 #Javascript
javascript定时器取消定时器及优化方法
Jul 08 #Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 #Javascript
You might like
php递归使用示例(php递归函数)
2014/02/14 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
js实现分割上传大文件
2016/03/09 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python函数式编程实例详解
2020/01/17 Python
python定义类self用法实例解析
2020/01/22 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
安全生产管理责任书
2014/04/16 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
寒假安全保证书
2015/02/28 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技