MultiSelect multi-select jquery plug-in

方便好用的多重選擇器 – jQuery MultiSelect介紹

林哲豪 2017/10/11 10:00:00
13118







主題

方便好用的多重選擇器 jQuery MultiSelect介紹

文章簡介:

有時候我們會需要做個能夠多重選擇的下拉選單,而一般的標籤屬性所顯示的並不是很明瞭,操作起來也不方便,如果用這個multi select的套件,便能明確的把已選擇的選項呈現出來,不僅讓使用者操作起來順手,更讓介面變得美觀、大器。

作者:

林哲豪

版本:

V1.0

產出日期:

2017/07/19


前言

有時候我們會需要做個能夠多重選擇的下拉選單,而一般的標籤屬性所顯示的並不是很明瞭,操作起來也不方便,如果用這個multi select的套件,便能明確的把已選擇的選項呈現出來,不僅讓使用者操作起來順手,更讓介面變得美觀、大器。

目的

學習此套件的基本套用方法及相關參數的設定,讓閱讀此文章的人們能夠快速了解並套用此套件至頁面中。

開始前準備

本架構建立於以下版本的環境:

Chrome 59.0.3071.115

HTML5

jQuery 2.2.4


首先,我們先準備一個空白的畫面

並引入jquery.jsjquery.multi-select.js以及相關css


接下來讓我們用<select>標籤模擬一些資料出來,並標記多選


此時頁面長相如圖,小小一個且不好操作,對吧?


有了一些資料以後,我們可以開始套用我們的套件Mutli-Select


好的讓我們看看結果


可以看出,在沒有任何設定的情況下,會產生左右兩個<div>,左邊是未選擇的,

右邊是已選擇的,會依照<option>標籤是否有selected屬性來決定位置。


設定參數

接下來就來就紹一些參數的用法

網站的說明有以下幾種:


我就挑比較有機會用到的來簡單說明,參數設定如下圖


afterInit:

載入完成後要做的事情,參數container是指外層紅色線條的<div>

註:紅色框框並不是後製,是由於cssClass的demoClass也對此<div>影響


afterSelect:

選擇一個選項後要做的事情,values是<option>的value,並不是文字

依圖所示,會先執行完function裡面的內容,才會把選項顯示至右側



afterDeselect:

取消一個已選擇選項後要做的事情,values是<option>的value,並不是文字

一樣,會先執行function的內容



dblClick:

是否要雙擊選項觸發選擇,預設為否


cssClass: 這裡輸入的文字是你定義好的class,並不能直接輸入css

方法

以下介紹網頁中的幾種方法,在此之前為方便demo,把幾個選項調整為selected


選擇或非選擇

在輸入

$('#multiSelectDemo').multiSelect('select', String|Array);

或是

$('#multiSelectDemo').multiSelect('deselect', String|Array);

會把指定的<option>調整為已選擇或是非選擇,第二個參數String|Array

傳入單一字串值或是傳入字串陣列,其內容會跟<option>的value做對應



選擇全部 / 取消選擇全部

$('#multiSelectDemo').multiSelect('select_all');

$('#multiSelectDemo').multiSelect('deselect_all');


刷新

$('#multiSelectDemo').multiSelect('refresh');


增加選項

若頁面有需要在載入後新增選項,則可以呼叫此方法

$('#multiSelectDemo').multiSelect('addOption',

{ value: 'test', text: 'test', index: 0, nested: 'optgroup_label' }

);

value是<option>的value屬性

text是<option>顯示的文字

index是要插入的順序

nested是指若有option group則可指定


總結

有了這個套件,是不是讓多選功能變得輕鬆了呢,

官網上面也有很多相關的demo可以參考,

若有興趣更深入的研究可以去看看,

希望這篇文章能幫助到需要快速套用此套件的人

參考來源

官方網頁http://loudev.com/

林哲豪