效果预览:

一. 下载插件

github地址:https://github.com/istvan-ujjmeszaros/bootstrap-duallistbox

也可以在这个网站中下载:http://www.virtuosoft.eu/code/bootstrap-duallistbox/(排版很好,推荐做为API参考地址)

二. 使用

引用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>

初始化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>

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;
}
} }

效果:

四. 总结

1. 关于jquery版本问题,我自己写的demo使用的是1.10.2,实际上,只要jquery版本大于1.9.1即可,主要是匹配Bootstrap3.3.5版本需求的最低jquery版本。

另外,如果忽略Bootstrap报错,1.8.2版本也是可行的,控件渲染没有问题。

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

demo下载

希望本文对你有帮助。

Jquery双向select控件Bootstrap Dual Listbox的更多相关文章

  1. jquery 双向select控件bootstrap Dual listbox

    http://www.cnblogs.com/hangwei/p/5040866.html       -->jquery 双向select控件bootstrap Dual listboxhtt ...

  2. Jquery获取select 控件的change事件时选中的值

    HTML代码如下: <div class="col-sm-9 col-xs-12"> <select id="groupid" class=& ...

  3. jQuery操作select控件取值和设值

    1.级联select的操作,后一个select的值随着前一个select选中值变化 $(".select_A").change(function(){ $(".selec ...

  4. Jquery设置select控件指定text的值为选中项

    <select name="streetid" id="streetid"> <option value="4">北 ...

  5. jquery仿jquery mobile的select控件效果

    不说废话.直接上代码 //仿jQuery mobile Select控件 //使用方法box为容器id,_id指控件id,selectvalue为选中值,Value为当前值 function Sele ...

  6. jquery操作select2控件

    (一)select2常用的操作:添加.移除.获取选中的value()与text() (1)移除事件:$("#select_id").unbind("change" ...

  7. 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>

    上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...

  8. Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html

    Jquery 操作Html 控件 CheckBox.Radio.Select 控件   在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio ...

  9. Jquery 操作Html 控件 CheckBox、Radio、Select 控件

    在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio.select,用 Jquery 库操作其他会方便很多,下面用Jq对这些控件的操作进行一 ...

随机推荐

  1. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  2. 基于本地存储的kvm虚拟机在线迁移

    基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...

  3. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

  4. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  5. 事务日志已满,原因为“ACTIVE_TRANSACTION”

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 异常处理汇总-数据库系列  http://www.cnblogs.com/dunitia ...

  6. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  7. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  8. Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误——SHH框架

    SHH框架工程,Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误 1.查看配置文件web.xml中是否配置.or ...

  9. Git分布式版本控制教程

    Git分布式版本控制Git 安装配置Linux&Unix平台 Debian/Ubuntu $ apt-get install git Fedora $ ) $ dnf and later) G ...

  10. Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

    在学习CGlib动态代理时,遇到如下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.objectwe ...