Select2學習總結

本文主要是對Select2插件常用使用方法的一些總結。包括其單選、多選、分組顯示、按照拼音搜索功能。並通過測試示例對其效果進行了驗證。
一、效果圖

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
二、 使用方式

1.使用前需要引入下面幾個插件:
select2.css或者select2.min.css
select2.js或者select2.min.js
jquery-2.0.3.min.js

<link href="../../plugins/select2/css/select2.css" rel="stylesheet" />
<script src="../../plugins/select2/js/select2.js"></script>
<script src="../../plugins/jquery-2.0.3.min.js"></script>

2.如果在使用select2單選搜索時想要能夠按照拼音字母進行搜索,需要引入pinyin.js插件,並對select2.js源碼進行修改。

<script src="../../plugins/pinyin/pinyin.js"></script>

pinyin.js下載地址:https://download.csdn.net/download/jianyuerensheng/10381102

select2.js文件修改方式:
將select2.js文件中下面這部分代碼屏蔽掉

var original = stripDiacritics(data.text).toUpperCase();
var term = stripDiacritics(params.term).toUpperCase();
// Check if the text contains the term
if (original.indexOf(term) > -1) {
    return data;
}

並在上述屏蔽代碼的下面添加以下代碼:

//拼音搜索功能
if (stripDiacritics(data.text).toPinYin === undefined) {
    var original = stripDiacritics(data.text).toUpperCase();
    var term = stripDiacritics(params.term).toUpperCase();
    // Check if the text contains the term
     if (original.indexOf(term) > -1) {
         return data;
    }
} else {
    //以下爲拼音搜索功能新增代碼(4866行~4876行)
    var original = '';
    var original1 = '';
    var term = stripDiacritics(params.term).toUpperCase();
    if (stripDiacritics(data.text).toPinYin != undefined) {
        var result = stripDiacritics(data.text).toPinYin();
        original = result[0].indexOf(stripDiacritics(params.term).toUpperCase());
        original1 = result[1].indexOf(stripDiacritics(params.term).toUpperCase());
        if (original == -1 && original1 == -1) {
            original = stripDiacritics(data.text).toUpperCase().indexOf(term);
        }
    }
    // Check if the text contains the term
    if (original > -1 || original1 > -1) { //如果匹配則original爲0
        return data;
    }
}

三、常用功能說明

1.常用參數設置含義

tags: true,                             // 根據搜索框創建option,默認false
maximumSelectionLength: 6,              // 最多能夠選擇的個數
multiple: true,                         // 多選,默認false
data: initdata,                         // 下拉框綁定的數據
allowClear: true,                       // 清空,默認false
placeholder: '請添加或選擇語言'           // 佔位提示符
maximumInputLength: 20,                 // 允許搜索長度  
minimumResultsForSearch: 20,            // 至少20個結果的時候顯示搜索  
minimumResultsForSearch: Infinity,      // 永久隱藏搜索框  
selectOnClose: true,                    // 結果顯示高亮  
closeOnSelect: false,                   // select選中關閉下拉框  
separator: ",",                         // 分隔符  

2.select2事件:

//置空  
$eventSelect.val(null).trigger("change");  
//選中  
$eventSelect.on("selected", function (e) { })  
//移除  
$eventSelect.on("removed", function () { })  
//多個事件  
$eventSelect.on("close removed", function () { })  

3.獲取value和text

$("#xa").val();  
$("#xa").select2("val");  
$("#xa").select2('data').text ;

四、測試源碼示例

1.select2Test.html代碼:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>select2</title>
</head>
<body>
    <link href="../../plugins/select2/css/select2.css" rel="stylesheet" />
    <div>
        <label style="width: 100px; font-size: 14px;">單選</label>
        <select id="sel_menu" style="width: 400px;" >
            <option value=""></option>
        </select>
    </div>
    <div style="margin-top:20px;">
        <label style=" width: 100px; font-size: 14px;">多選</label>
        <select id="sel_menu2" multiple="multiple" style="width: 400px;"></select>
    </div>
    <div style="margin-top:20px;">
        <label style="width: 100px; font-size: 14px;">多選(含選中項)</label>
        <select id="sel_menu3" multiple="multiple" style="width: 400px;"></select>
    </div>
    <button onclick=getSelectedData() style ="margin-top: 20px;">多選選中值</button>
    <div style="margin-top:20px;">
        <label style=" width: 100px; font-size: 14px;">分組顯示</label>
        <select id="sel_menu4"  style="width:400px;"></select>   
    </div>  
    <script src="../../plugins/jquery-2.0.3.min.js"></script>
    <script src="../../plugins/select2/js/select2.js"></script>
    <script src="../../plugins/pinyin/pinyin.js"></script>
    <script src="../../js/select2Test.js"></script>
</body>
</html>

2.select2Test.js代碼:

//下拉框數據
var initdata = ["Java", "JavaScript", "C++", "C#", "Python", "PHP"];
//選中數據
var selectedData = ["Java", "PHP"];
//分組下拉框數據(帶ID)
var initGroupDataWithId=[
    { "text": "熟悉的", "children": [{ "id": 1, "text": "Java" }, { "id": 2, "text": "JavaScript" }, { "id": 3, "text": "C#" }, { "id": 4, "text": "PHP" }] },
    { "text": "不熟悉的", "children": [{ "id": 5, "text": "C++" }, { "id": 5, "text": "Python" }, { "id": 5, "text": "GO" }] }
];
//分組下拉框數據
var initGroupData = [
    { "text": "熟悉的", "children": ["Java", "JavaScript", "C#", "PHP"] },
    { "text": "不熟悉的", "children": ["C++", "Python", "GO"] }
];

//初始化頁面加載
$(document).ready(function () {

    //初始化select2單選
    initSelect2WithSearch();

    //初始化select2多選(沒有選中項)
    initSelect2();

    //初始化select2多選(包含選中項)
    select2WithData(selectedData);
});

/**
 * 初始化select2單選,默認帶搜索功能。
 */
function initSelect2WithSearch() {
    $("#sel_menu").select2({
        tags: true,
        placeholder: '請搜索或選擇語言',
        data: initdata,
        allowClear: true
    });
}
/**
 * 初始化select2多選(沒有選中項)
 */
function initSelect2() {
    $("#sel_menu2").select2({
        tags: true,
        maximumSelectionLength: 5,
        placeholder: '請添加或選擇語言',
        multiple: true,
        maximumInputLength: 10,//允許長度  
        data: initdata,
    });
}

/**
 * 初始化select2多選(包含選中項)
 */
function select2WithData(selectedData) {
    $("#sel_menu3").select2({
        tags: true,                          //支持新增,默認爲false
        maximumSelectionLength: 6,           //最多能夠選擇的個數
        multiple: true,                      //支持多選,默認爲false
        data: initdata,                      //下拉框綁定的數據
        allowClear: true,                    //支持清空,默認爲false
        placeholder: '請添加或選擇語言'      //提示語
    }).val(selectedData).trigger('change');  //多選情況下給選中項的賦值
}

/**
 * 獲取多選框選中項的值
 */
function getSelectedData() {
    var mulSelData = $("#sel_menu3").val().join(",");//獲取多選輸入框選中值的方式
    alert("sel_menu3的選中項是:" + mulSelData);
}
/**
 * 下拉列表分組顯示
 */
function initSelect2Group() {
    $('#sel_menu4').select2({
        placeholder: '請選擇',
        multiple: true,
        data: initGroupData
    });
    $('#sel_menu4').select2().val(["Java"]).trigger('change');
}

3.運行結果:
這裏寫圖片描述

參考博文:http://blog.csdn.net/u014388408/article/details/50587405

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章