轻松使用jQuery双向select控件Bootstrap Dual Listbox


Posted in Javascript onDecember 13, 2015

本文主要为大家介绍了双向select控件Bootstrap Dual Listbox的使用方法,Bootstrap Dual列表是一个为响应Twitter优化的列表框插件,它可以用在所有的现代浏览器和触摸设备上,分享给大家,具体如下:

效果图:

轻松使用jQuery双向select控件Bootstrap Dual Listbox

一、使用

1、引用css和js文件

<link href="scripts/bootstrap-3.3.5-dist/css/bootstrap.min.css" rel="stylesheet" />
 <!--<link href="//cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css" rel="stylesheet">-->
 <link href="scripts/duallistbox/bootstrap-duallistbox.min.css" rel="stylesheet" />
 <script src="scripts/jquery/jquery-2.1.4.min.js"></script>
 <script src="scripts/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>
 <!--<script src="//cdnjs.cloudflare.com/ajax/libs/prettify/r298/run_prettify.min.js"></script>-->
 <script src="scripts/duallistbox/jquery.bootstrap-duallistbox.min.js"></script>

2、初始化class属性为demo1的select元素

<script type="text/javascript">
  $(function () {
   var demo2 = $('.demo1').bootstrapDualListbox({
    nonSelectedListLabel: 'Non-selected',
    selectedListLabel: 'Selected',
    preserveSelectionOnMove: 'moved',
    moveOnSelect: false,
    nonSelectedFilter: 'ion ([7-9]|[1][0-2])'
   });

   $("#showValue").click(function () {
    alert($('[name="duallistbox_demo1"]').val());
   });
  });
 </script>

3、html代码

<div class="col-md-7">
  <select multiple="multiple" size="10" name="duallistbox_demo1" class="demo1">
   <option value="1">Option 1</option>
   <option value="2">Option 2</option>
   <option value="3" selected="selected">Option 3</option>
   <option value="4">Option 4</option>
   <option value="5">Option 5</option>
   <option value="6" selected="selected">Option 6</option>
   <option value="7">Option 7</option>
   <option value="8">Option 8</option>
   <option value="9">Option 9</option>
   <option value="10">Option 10</option>
  </select>
  <br />
  <input id="showValue" type="button" value="show selected data" />
 </div>

这样就完成了插件的调用

二、扩展

一个通用的、初始化数据的js函数:

/*初始化duallistbox*/
  //queryParam1:参数
  //selectClass:select元素class属性
  //selectedDataStr:选中数据,多个以,隔开
  function initListBox(queryParam1,selectClass, selectedDataStr) {
   var paramData = {
    'testParam1': queryParam1
   }
   $.ajax({
    url: 'DataHandler.ashx',
    type: 'get',
    data: paramData,
    async: true,
    success: function (returnData) {
     var objs = $.parseJSON(returnData);
     $(objs).each(function () {
      var o = document.createElement("option");
      o.value = this['id'];
      o.text = this['name'];
      if ("undefined" != typeof (selectedDataStr) && selectedDataStr != "") {
       var selectedDataArray = selectedDataStr.split(',');
       $.each(selectedDataArray, function (i, val) {
        if (o.value == val) {
         o.selected = 'selected';
         return false;
        }
       });
      }
      $("." + selectClass + "")[0].options.add(o);
     });
     //渲染dualListbox
     $('.' + selectClass + '').bootstrapDualListbox({
      nonSelectedListLabel: 'Non-selected',
      selectedListLabel: 'Selected',
      preserveSelectionOnMove: 'moved',
      moveOnSelect: false//,
      //nonSelectedFilter: 'ion ([7-9]|[1][0-2])'
     });
    },
    error: function (e) {
     alert(e.msg);
    }
   });
  }

html代码:

<div class="col-md-7">
  <select multiple="multiple" size="10" name="duallistbox_demo2" class="demo2">
  </select>
  <br />
  <input id="showValue" type="button" value="show selected data" />
 </div>

调用:

$(function () {
   //初始化
   initListBox('hangwei.cnblogs.com', 'demo2');

   $("#showValue").click(function () {
    alert($('[name="duallistbox_demo2"]').val());
   });
  });

DataHandler.ashx代码:

<%@ WebHandler Language="C#" Class="DataHandler" %>

using System;
using System.Web;
using System.Collections.Generic;
using Newtonsoft.Json;

public class DataHandler : IHttpHandler {
 
 public void ProcessRequest (HttpContext context) {
  var china = new { id = "China", name = "中国" };
  var usa = new { id = "USA", name = "美国" };
  var rsa = new { id = "Russia", name = "俄罗斯" };
  var en = new { id = "English", name = "英国" };
  var fra = new { id = "France", name = "法国" };
  List<object> list = new List<object>();
  list.Add(china);
  list.Add(usa);
  list.Add(rsa);
  list.Add(en);
  list.Add(fra);
  string returnJson = JsonConvert.SerializeObject(list);
  context.Response.ContentType = "text/plain";
  context.Response.Write(returnJson);  
 }
 
 public bool IsReusable {
  get {
   return false;
  }
 }

}

效果:

轻松使用jQuery双向select控件Bootstrap Dual Listbox

本文的demo使用的开发环境:VS2013、.NET Framework4.5.

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

以上就是双向select控件Bootstrap Dual Listbox的使用方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
概述jQuery中的ajax方法
Dec 16 Javascript
浅析Vue 生命周期
Jun 21 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 #Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 #Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 #Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 #Javascript
JavaScript文档碎片操作实例分析
Dec 12 #Javascript
javascript性能优化之事件委托实例详解
Dec 12 #Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 #Javascript
You might like
php str_replace的替换漏洞
2008/03/15 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
extjs fckeditor集成代码
2009/05/10 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
js初始化验证实例详解
2016/11/26 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
浅谈layui里的上传控件问题
2019/09/26 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python异常处理try except过程解析
2020/02/03 Python
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
爱心捐书倡议书
2015/04/27 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL