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 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
javascript获取元素CSS样式代码示例
Nov 28 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
AngularJS日程表案例详解
Aug 15 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
Dec 29 Javascript
vue实现通讯录功能
Jul 14 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
原生js实现淘宝放大镜效果
Oct 28 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
Nov 30 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
Sep 27 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
15种PHP Encoder的比较
2007/03/06 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
客户端静态页面玩分页
2006/06/26 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
python练习程序批量修改文件名
2014/01/16 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Django实现自定义404,500页面教程
2017/03/26 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
安全生产先进个人总结
2015/02/15 职场文书
教师个人自我评价
2015/03/04 职场文书
礼仪培训心得体会
2016/01/22 职场文书
Django如何与Ajax交互
2021/04/29 Python