原文:http://www.cnblogs.com/landeanfen/p/5013452.htmljavascript
前言:今天繼續來看看bootstrap的另外一個組件:multiselect。記得在項目開始以前,博主項目組幾個同事就使用哪些js組件展開過討論,其中就說到了select組件,因爲項目的總體風格使用的bootstrap風格,因此在選用select組件的時候優先考慮和bootstrap結合使用的。其中就找到了兩個這種組件,大致樣式和功能基本相同,通過一番討論,項目組決定使用davidstutz的bootstrap-multiselect 組件,今天就來看看這兩個組件的用法。css
一、第一個組件是寫bootstrap table的主人公wenzhixin封裝的一個組件——multiple-select。這個組件風格簡單、文檔全、功能強大。可是以爲它選中的效果不太好。關於它的效果展現,咱們放在後面。仍是給出對應的文檔API。html
Multiple-Select源碼主頁:https://github.com/wenzhixin/multiple-selectjava
Multiple-Select文檔以及Demo:http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CNjquery
二、第二個組件也是在github上面找的——bootstrap-multiselect。這個組件風格和第一個很是類似,文檔也挺全面。git
bootstrap-multiselect源碼主頁:https://github.com/davidstutz/bootstrap-multiselectgithub
bootstrap-multiselect文檔以及Demo:http://davidstutz.github.io/bootstrap-multiselect/bootstrap
這個組件須要的瀏覽器支持以下:瀏覽器
還好,通常主流的瀏覽器都可以支持。this
(1)原始的MultiSelect
(2)初始化的Multiple Select
(3)設置選中和禁用
(4)設置分組
(5)設置未選中的初始值:請選擇
(6)初始化成單選
(7)設置組件的篩選功能
既然是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)
類型: boolean
是否打開下拉列表。
默認值爲 false
。
類型: string
顯示默認的提示信息。
默認值爲 ''
。
類型: boolean
是否顯示全選複選框。
默認值爲 true
。
類型: string
全選複選框的顯示內容。
默認值爲 Select all
。
類型: boolean
是否在一行中顯示多個選項。
默認值爲 false
。
類型: integer
一行中每一個選項的寬度。
默認值爲 80
。
類型: boolean
是否只容許你選擇一行。
默認值爲 false
。
類型: string
定義下拉列表的位置,只能是 bottom
或者 top
。
默認值爲 bottom
.
類型: boolean
是否開啓過濾功能。
默認值爲 false
。
類型: integer
定義下拉列表的寬度。
默認值爲 undefined
。 默認與 select 的寬度相同。
類型: integer
下拉列表的最大高度。
默認值爲 250
。
(7)經常使用事件(轉載至文檔http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN)
當下拉列表被打開時觸發。
當下拉列表被關閉時觸發。
點擊全選或者調用 「checkall」 方法時觸發。
點擊全不選或者調用 「uncheckall」 方法時觸發。
點擊分組時觸發。
點擊一個複選框時觸發
(8)經常使用方法(轉載至文檔http://wenzhixin.net.cn/p/multiple-select/docs/index.html?locale=zh_CN)
獲取 Multiple Select 選擇內容。
參數: type
類型: string
選擇內容的類型,value 或者 text。
默認值爲 value
。
設置 Multiple Select 的內容。
參數: values
類型: array
選擇框的內容信息。
啓用 Multiple Select。
禁用 Multiple Select。在這種模式下,不容許用戶操做。
全選全部的複選框。
$('select').multipleSelect('checkAll');
全不選全部的複選框。
$('select').multipleSelect('uncheckAll');
從新加載 Multiple Select。
假如你是經過 AJAX 或者 DOM 來手動添加或者刪除 option 選項,能夠經過 refresh 方法來從新加載 Multiple Select。
(1)最原始的樣子
(2)單選
(3)默認選中和禁用
(4)分組摺疊和展開
(5)初始化控件選中和未選中的值
(6)搜索過濾功能
初始化的過程和上面的相似,首先引用文件。
<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 }); });
其餘效果的代碼就不一一展現了,代碼很簡單,看看文檔基本沒啥問題。
以上就是兩種多選組件的效果展現以及簡單的代碼示例。至於哪一種更好全憑園友們本身的感受,使用起來都挺簡單,功能基本相似。源碼下載