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 相关文章推荐
js压缩利器
Feb 20 Javascript
jquery 页面全选框实践代码
Apr 02 Javascript
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
浅析javascript中函数声明和函数表达式的区别
Feb 15 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
Nov 23 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
Mar 03 Javascript
JS监听滚动和id自动定位滚动
Dec 18 Javascript
解决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/12 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
php中上传文件的的解决方案
2018/09/25 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python如何计算语句执行时间
2019/11/22 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python3注册全局热键的实现
2020/03/22 Python
python 异步async库的使用说明
2020/05/04 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
顶撞老师检讨书
2014/02/07 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书