01:jQuery的下拉选select2插件用法

1.1 select2插件基本使用

  1、下载select2插件

      1. 下载地址:https://github.com/select2/select2

      2、官网地址:https://select2.org/getting-started/basic-usage

      3、文件需要引入select2.full.js、select2.min.css(4.0.1版本)和jquery.1.8.3及以上

  2、使用原有的 option

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>
</head>
<body>
    <select class="js-example-basic-single" name="state">
         <option value="2">tom</option>
         <option value="18">naiqiang.xiao</option>
         <option value="19">jian.yang</option>
    </select>

    <link href="/static/select2/select2.css" rel="stylesheet" />
    <script src="/static/jquery-1.12.4.js"></script>
    <script src="/static/select2/select2.js"></script>
    <script>
        $(document).ready(function() {
            $('.js-example-basic-single').select2();
        });
    </script>
</body>
</html>
使用原有的 option

  3、加载本地数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>
</head>
<body>
    <select id="select"></select>

    <link href="/static/select2/select2.css" rel="stylesheet" />
     <script src="/static/jquery-1.12.4.js"></script>
     <script src="/static/select2/select2.js"></script>
    <script>
        var data = [
            { id: 0, text: 'enhancement' },
            { id: 1, text: 'bug' },
            { id: 2, text: 'duplicate' },
            { id: 3, text: 'invalid' },
            { id: 4, text: 'wontfix' }
            ];
        $("#select").select2({
         data: data,
         placeholder:'请选择',
         allowClear:true
        })
    </script>

</body>
</html>
加载本地数据

1.2 使用ajax加载远程数据

  1、参数说明 

      1.q: params.term  查询参数(params.term表示输入框中内容,q发生到服务器的参数名;所以这里你可以添加自定义参数,如:stype:'person')

      2.processResults中results:  data返回数据(返回最终数据给results,如果我的数据在data.res下,则返回data.res。这个与服务器返回json有关)

      3.minimumInputLength 最小需要输入多少个字符才进行查询,与之相关的maximumSelectionLength表示最大输入限制。

      4.escapeMarkup 字符转义处理

      5.templateResult 返回结果回调function formatRepo(repo){return repo.text},这样就可以将返回结果的的text显示到下拉框里,当然你可以return repo.text+"1";等

      6.templateSelection 选中项回调function formatRepoSelection(repo){return repo.text}

      7.关于返回的 json的格式:select2默认json格式为[{id:1,text:'text'},{id:2,text:'text'}],新版严格要求这样的格式,当然你可以添加列,如:[{id:1,text:'text',name:'liu'}]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>
    <style>
        ul li{
            width: 100px;
        }
    </style>
</head>
<body>
    <select id="select" style=" 400px"></select>

    <link href="/static/select2/select2.css" rel="stylesheet" />
     <script src="/static/jquery-1.12.4.js"></script>
     <script src="/static/select2/select2.js"></script>
    <script>
        $("#select").select2({
            ajax: {
                url: "/data/",
                dataType: 'json',
                delay: 250,
                data: function(params) {
                    return {
                        q: params.term,  // 这里是查询参数,当输入框的值改变时就会实时将此参数提交到后台
                    };
                },
                processResults: function(data) {
                    return {
                        results: data
                    };
                },
                cache: true
            },
            escapeMarkup: function(markup) {
                return markup;
            },
            // minimumInputLength: 10,
            templateResult: formatRepo,
            templateSelection: formatRepoSelection,
            placeholder:'请选择',
            allowClear:true
        });

        // 返回结果回调此函数 repo 是url中返回的数据, 可以在这里对返回数据进行过滤
        function formatRepo(repo){
            return repo.text
        }

        // 选中选项时回调此函数
        function formatRepoSelection(repo){
            return repo.text
        }
    </script>
</body>
</html>
加载远程数据
原文地址:https://www.cnblogs.com/xiaonq/p/9476684.html