JS组件系列——两种bootstrap multiselect组件大比拼

简介:

前言:今天继续来看看bootstrap的另一个组件:multiselect。记得在项目开始之前,博主项目组几个同事就使用哪些js组件展开过讨论,其中就说到了select组件,由于项目的整体风格使用的bootstrap风格,所以在选用select组件的时候优先考虑和bootstrap结合使用的。其中就找到了两个这种组件,大体样式和功能基本相同,经过一番讨论,项目组决定使用davidstutz的bootstrap-multiselect 组件,今天就来看看这两个组件的用法。

一、组件说明以及API

1、第一个组件是写bootstrap table的主人公wenzhixin封装的一个组件——multiple-select。这个组件风格简单、文档全、功能强大。但是觉得它选中的效果不太好。关于它的效果展示,我们放在后面。还是给出对应的文档API。

Multiple-Select源码主页:https://github.com/wenzhixin/multiple-select

Multiple-Select文档以及Demo:http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN

2、第二个组件也是在github上面找的——bootstrap-multiselect。这个组件风格和第一个非常相似,文档也挺全面。

bootstrap-multiselect源码主页:https://github.com/davidstutz/bootstrap-multiselect

bootstrap-multiselect文档以及Demo:http://davidstutz.github.io/bootstrap-multiselect/

二、Multiple-select组件

1、组件说明

这个组件需要的浏览器支持如下:

  • IE 7+
  • Chrome 8+
  • Firefox 10+
  • Safari 3+
  • Opera 10.6+

还好,一般主流的浏览器都能够支持。

2、效果预览

 (1)原始的MultiSelect

(2)初始化的Multiple Select

 

(3)设置选中和禁用

(4)设置分组

(5)设置未选中的初始值:请选择

(6)初始化成单选

(7)设置组件的筛选功能

3、代码示例

既然是bootstrap的组件,肯定需要bootstrap的支持。我们来看看需要引用的js

复制代码
    @*Jquery*@
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>

    @*bootstrap*@
    <script src="~/Content/bootstrap/js/bootstrap.min.js"></script>
    <link href="~/Content/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    @*multiple-select*@
    <script src="~/Content/multiselect_wenzhixin/multiple-select-master/multiple-select.js"></script>
    <link href="~/Content/multiselect_wenzhixin/multiple-select-master/multiple-select.css" rel="stylesheet" />

    @*页面js*@
    <script src="~/Scripts/Home/Index_wenzhixin.js"></script>
复制代码

(1)原始的初始化

复制代码
               <label class="control-label col-xs-1" for="sel_search_orderstatus">多选站点</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus" style="width:150px" multiple="multiple">
                                <option value="0">未排产</option>
                                <option value="5">已排产</option>
                                <option value="10">已锁定</option>
                                <option value="25">在制</option>
                                <option value="20">订单提交</option>
                                <option value="30">订单删除</option>
                                <option value="50">订单报废</option>
                            </select>
                        </div>
复制代码
$(function () {
    $('#sel_search_orderstatus').multipleSelect();
})

(2)设置选中和禁用

              <label class="control-label col-xs-1" for="sel_search_orderstatus2">disabled Select</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus2" style="width:150px" multiple="multiple">
                               ......
                            </select>
                        </div>
$(function () {
    $('#sel_search_orderstatus2').multipleSelect();
})

(3)设置分组和初始值

复制代码
              <label class="control-label col-xs-1" for="sel_search_orderstatus3">分组</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus3" style="width:150px" multiple="multiple">
                                <optgroup label="未上线">
                                    <option value="0">未排产</option>
                                </optgroup>
                                <optgroup label="已上线">
                                    <option value="5">已排产</option>
                                    <option value="10">已锁定</option>
                                    <option value="25">在制</option>
                                    <option value="20">订单提交</option>
                                </optgroup>
                                <optgroup label="异常">
                                    <option value="30">订单删除</option>
                                    <option value="50">订单报废</option>
                                </optgroup>
                            </select>
                        </div>
复制代码
$(function () {
    $('#sel_search_orderstatus3').multipleSelect({
        placeholder: "请选择"
    });
})

(4)单选

              <label class="control-label col-xs-1" for="sel_search_orderstatus4">单选</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus4" style="width:150px" multiple="multiple">
                                .......
                            </select>
                        </div>
$(function () {
    $('#sel_search_orderstatus4').multipleSelect({
        placeholder: "请选择",
        single: true
    });
})

(5)筛选

              <label class="control-label col-xs-1" for="sel_search_orderstatus5">筛选</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus5" style="width:150px" multiple="multiple">
                                ......
                            </select>
                        </div>
$(function () {
    $('#sel_search_orderstatus5').multipleSelect({
        placeholder: "请选择",
        filter: true
    });
})

(6)更多参数:如果园友们有兴趣,可以看看源码里面的所有参数,虽然没有中文详解,但是根据英文的大概意思就能知道是干什么用的,如果你的multiple select不想要默认的初始值,可以在初始化的时候去设置他们的值。如下是源码里面的默认参数列表。

下面是博主从文档里面截选出来的一些自认为比较重要的参数说明:(转载至文档http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN

  • isOpen

类型: boolean

是否打开下拉列表。

默认值为 false

  • placeholder

类型: string

显示默认的提示信息。

默认值为 ''

  • selectAll

类型: boolean

是否显示全选复选框。

默认值为 true

  • selectAllText

类型: string

全选复选框的显示内容。

默认值为 Select all

  • multiple

类型: boolean

是否在一行中显示多个选项。

默认值为 false

  • multipleWidth

类型: integer

一行中每个选项的宽度。

默认值为 80

  • single

类型: boolean

是否只允许你选择一行。

默认值为 false

  • position

类型: string

定义下拉列表的位置,只能是 bottom 或者 top

默认值为 bottom.

  • filter

类型: boolean

是否开启过滤功能。

默认值为 false

  • width

类型: integer

定义下拉列表的宽度。

默认值为 undefined。 默认与 select 的宽度相同。

  • maxHeight

类型: integer

下拉列表的最大高度。

默认值为 250

(7)常用事件(转载至文档http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN

  • onOpen

当下拉列表被打开时触发。

  • onClose

当下拉列表被关闭时触发。

  • onCheckAll

点击全选或者调用 “checkall” 方法时触发。

  • onUncheckAll

点击全不选或者调用 “uncheckall” 方法时触发。

  • onOptgroupClick

点击分组时触发。

  • onClick

点击一个复选框时触发

(8)常用方法(转载至文档http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN

  • getSelects

获取 Multiple Select 选择内容。

参数: type

类型: string

选择内容的类型,value 或者 text。

默认值为 value

  • setSelects

设置 Multiple Select 的内容。

参数: values

类型: array

选择框的内容信息。

  • enable

启用 Multiple Select。

  • disable

禁用 Multiple Select。在这种模式下,不允许用户操作。

  • checkAll

全选所有的复选框。

$('select').multipleSelect('checkAll');
  • uncheckAll

全不选所有的复选框。

$('select').multipleSelect('uncheckAll');
  • refresh

重新加载 Multiple Select。

假如你是通过 AJAX 或者 DOM 来手动添加或者删除 option 选项,可以通过 refresh 方法来重新加载 Multiple Select。

三、Bootstrap-multiselect组件

1、效果预览

(1)最原始的样子

 

(2)单选

(3)默认选中和禁用

(4)分组折叠和展开

(5)初始化控件选中和未选中的值

(6)搜索过滤功能

2、代码示例

初始化的过程和上面的类似,首先引用文件。

复制代码
   <script src="~/Scripts/jquery-1.10.2.min.js"></script>

    <script src="~/Content/bootstrap/js/bootstrap.min.js"></script>
    <link href="~/Content/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

    <script src="~/Content/multiselect_davidstutz/js/bootstrap-multiselect.js"></script>
    <link href="~/Content/multiselect_davidstutz/css/bootstrap-multiselect.css" rel="stylesheet" />

    <script src="~/Scripts/Home/Index_davidstutz.js"></script>
复制代码

(1)最原始的初始化

复制代码
                        <label class="control-label col-xs-1" for="sel_search_orderstatus">多选站点</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus" style="width:150px" multiple="multiple">
                                <option value="0">未排产</option>
                                <option value="5">已排产</option>
                                <option value="10">已锁定</option>
                                <option value="25">在制</option>
                                <option value="20">订单提交</option>
                                <option value="30">订单删除</option>
                                <option value="50">订单报废</option>
                            </select>
                        </div>
复制代码
$(function () {
    $('#sel_search_orderstatus').multiselect();
});

(2)设置选中和禁用

复制代码
              <label class="control-label col-xs-1" for="sel_search_orderstatus2">disabled Select</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus2" style="width:150px" multiple="multiple">
                                <option value="0">未排产</option>
                                <option value="5" selected="selected">已排产</option>
                                <option value="10" selected="selected">已锁定</option>
                                <option value="25" disabled="disabled">在制</option>
                                <option value="20" disabled="disabled">订单提交</option>
                                <option value="30" disabled="disabled" selected="selected">订单删除</option>
                                <option value="50">订单报废</option>
                            </select>
                        </div>
复制代码

(3)分组

复制代码
<label class="control-label col-xs-1" for="sel_search_orderstatus3">分组</label>
                        <div class="col-xs-2" style="margin-top:7px;">
                            <select id="sel_search_orderstatus3" style="width:150px" multiple="multiple">
                                <optgroup label="未上线">
                                    <option value="0">未排产</option>
                                </optgroup>
                                <optgroup label="已上线">
                                    <option value="5">已排产</option>
                                    <option value="10" selected="selected">已锁定</option>
                                    <option value="25" disabled="disabled">在制</option>
                                    <option value="20">订单提交</option>
                                </optgroup>
                                <optgroup label="异常">
                                    <option value="30">订单删除</option>
                                    <option value="50">订单报废</option>
                                </optgroup>
                            </select>
                        </div>
复制代码
$(function () {
    $('#sel_search_orderstatus3').multiselect({
        enableCollapsibleOptGroups: true
    });
});

其他效果的代码就不一一展示了,代码很简单,看看文档基本没啥问题。

四、总结

 以上就是两种多选组件的效果展示以及简单的代码示例。至于哪种更好全凭园友们自己的感觉,使用起来都挺简单,功能基本类似。




本文转自懒得安分博客园博客,原文链接:http://www.cnblogs.com/landeanfen/p/5013452.html,如需转载请自行联系原作者

目录
相关文章
|
2天前
|
JavaScript 前端开发 测试技术
[译]: Vue.js 函数式组件:what, why & when?
[译]: Vue.js 函数式组件:what, why & when?
[译]: Vue.js 函数式组件:what, why & when?
|
1天前
|
JavaScript 前端开发 开发者
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
|
1天前
|
JavaScript 开发者
揭秘Vue.js生命周期钩子:它们是如何掌控组件的生与死?
【8月更文挑战第30天】Vue.js 的生命周期钩子是开发者必须掌握的关键概念,它涵盖了组件从创建、挂载、更新到销毁的整个过程,提供了在特定时机操作DOM、获取数据或执行逻辑的能力。从 `beforeCreate` 到 `unmounted`,每个阶段都有特定的任务:如 `created` 适合异步数据获取,`mounted` 用于DOM操作,而 `beforeUnmount` 则用于清理资源。
|
1天前
|
JavaScript 前端开发
揭秘Vue.js组件魔法:如何轻松驾驭前端代码,让维护变得轻而易举?
【8月更文挑战第30天】本文探讨了如何利用Vue.js的组件化开发提升前端代码的可维护性。组件化开发将复杂页面拆分为独立、可复用的组件,提高开发效率和代码可维护性。Vue.js支持全局及局部组件注册,并提供了多种组件间通信方式如props、事件等。通过示例展示了组件定义、数据传递及复用组合的方法,强调了组件化开发在实际项目中的重要性。
|
1天前
|
存储 JavaScript 前端开发
【Vue.js的神秘力量】一键解锁:如何让Bootstrap和Vuex成为你的开发超能力?
【8月更文挑战第30天】Vue.js是一个轻量且灵活的JavaScript框架,易于上手且功能强大。为提高开发效率和应用交互性,常需集成第三方库。本文介绍如何在Vue.js项目中集成Bootstrap和Vuex,及其它常见第三方库。Bootstrap提供响应式设计和预制组件,通过安装插件和引入CSS/JS即可集成;Vuex作为官方状态管理库,通过安装并创建store来管理组件状态。此外,Vue.js还可轻松集成Axios和Vue Router等库,提升HTTP请求和页面路由功能。合理选择和集成第三方库能显著提升开发效率,但需保持代码可维护性和可读性。
|
1天前
|
前端开发 JavaScript 开发者
Vue.js 与第三方库的神秘融合:Bootstrap、Vuex 等究竟带来何种惊喜?
【8月更文挑战第30天】Vue.js 作为一款流行的前端框架,凭借其强大的功能和易用性深受开发者喜爱。它不仅能独立运作,还能无缝集成各种第三方库,显著提升开发效率。例如,通过 `vue-bootstrap`,我们可以轻松引入 Bootstrap 的响应式组件,快速打造美观的用户界面;借助 Vuex,Vue 提供的状态管理方案,能有效解决复杂应用中的状态共享难题。此外,诸如 `axios` 和 `moment` 等库也能进一步增强 Vue 的功能,使其成为构建高性能前端应用的理想选择。
|
1天前
|
设计模式 JavaScript 前端开发
Vue.js 与第三方库的奇妙融合,Bootstrap 和 Vuex 究竟能带来何种意想不到的变革?
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和可维护性,还使得Vue应用更加模块化和灵活。
|
2月前
|
开发框架 前端开发 JavaScript
循序渐进BootstrapVue,开发公司门户网站(1)---基于Bootstrap网站模板构建组件界面
循序渐进BootstrapVue,开发公司门户网站(1)---基于Bootstrap网站模板构建组件界面
|
2月前
|
开发框架 前端开发 JavaScript
循序渐进BootstrapVue,开发公司门户网站(2)--- 使用wow.js动画组件以及自定义的CSS样式处理动态效果
循序渐进BootstrapVue,开发公司门户网站(2)--- 使用wow.js动画组件以及自定义的CSS样式处理动态效果
|
JavaScript 前端开发 C++
一步一步实现ATL开发的ActiveX组件与javascript的交互(一)
1.      打开VS2008,单击起始页中的“New Project…”,选择“ATL”分类下的“ATL Project”项目,项目名称为“ATLtest”。在随后出现的项目向导中,使用默认配置即可。
1602 0
下一篇
云函数