select2用法总结

Select2是什么

Select2是一款可以对HTML的<select>标签进行功能优化的jQuery插件,支持对列表进行检索,从远程数据源获取列表项等各种功能.

官网文档在此:https://select2.github.io

代码示例

示例1.从数组中获取列表项且支持搜索

前端代码:


<!DOCTYPE html>
<html>
<head>
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script src="//cdn.bootcss.com/select2/4.0.3/js/select2.min.js"></script>
    <link href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/select2/4.0.3/css/select2.min.css" rel="stylesheet">

</head>
<body>

<select id="select2_sample" name="sample" style="width:75%" ></select>

</body>

<script>
    $(document).ready(function(){

        var data = [{id: 0, text: 'apple'}, {id: 1, text: 'banana'}, {id: 2, text: 'pear'}];//下拉列表中的数据项

        $("#select2_sample").select2({
            data: data
        });//启动select2

    });
</script>
示例2.从服务器(API)异步获取列表项且支持搜索

前端代码:

<!DOCTYPE html>
<html>
<head>
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script src="//cdn.bootcss.com/select2/4.0.3/js/select2.min.js"></script>
    <link href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/select2/4.0.3/css/select2.min.css" rel="stylesheet">

</head>
<body>

<select id="select2_sample" name="sample" style="width:75%" >
    <option value="100" selected="selected">默认项</option>
</select>

</body>

<script>
    $(document).ready(function(){

        $("#select2_sample").select2({
            ajax: {

                url     : "http://123.57.28.146:8088/sample",//请求的API地址
                dataType: 'json',//数据类型
                data    : function(params){

                    return {
                        q   : params.term//此处是最终传递给API的参数
                    }
                },
                results : function(data){ return data;}//返回的结果

            }
        });//启动select2

    });
</script>

API代码(基于Laravel 5.0)

public function sample()
    {
        $results = [];
        $input       = Input::get('q');

        if($input == 'A'){
            
            $results[] = array("id"=>"1","text"=>"apple");
            $results[] = array("id"=>"2","text"=>"apache");
        }
        if($input == 'B'){

            $results[] = array("id"=>"1","text"=>"banana");
            $results[] = array("id"=>"2","text"=>"bro");
        }
        if($input == 'C'){

            $results[] = array("id"=>"1","text"=>"CL");
            $results[] = array("id"=>"2","text"=>"COOL");
        }

        return array('results' => $results);

    }
示例3.从服务器(API)异步获取列表项且支持图片显示

前端代码:

<!DOCTYPE html>
<html>
<head>
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script src="//cdn.bootcss.com/select2/4.0.3/js/select2.min.js"></script>
    <link href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/select2/4.0.3/css/select2.min.css" rel="stylesheet">

    <style>
        .img-car{

            height:20px;
            width:30px;
        }
    </style>

</head>
<body>

<select id="select2_sample" name="sample" style="width:75%" >
    <option value="100" selected="selected">默认项</option>
</select>

</body>

<script>
    $(document).ready(function(){

        function formatState (state) {

            if (!state.id) { return state.text; }//未找到结果时直接跳出函数
            var $state = $(
                    '<span><img src="http://ocv7z9x4r.bkt.clouddn.com/car_logo_' + state.text + '.jpg" class="img-car" />' + state.text + '</span>'
            );//将API返回的结果转换为模板
            return $state;
        }

        $("#select2_sample").select2({

            ajax: {

                url     : "http://123.57.28.146:8088/sample",//请求的API地址
                dataType: 'json',//数据类型
                data    : function(params){

                    return {
                        q   : params.term//此处是最终传递给API的参数
                    }
                },
                results : function(data){ return data;}//返回的结果

            },
            templateResult: formatState//模板化
        });//启动select2

    });
</script>

API代码(基于Laravel 5.0)

public function sample()
    {
        $results = [];
        $input       = Input::get('q');

        if($input == 'CAR'){

            $results[] = array("id"=>"1","text"=>"benz");
            $results[] = array("id"=>"2","text"=>"bmw");
            $results[] = array("id"=>"2","text"=>"audi");
        }

        return array('results' => $results);

    }

效果图:

示例4.为Select2设置各种参数
参数名称 参数用途
delay 默认情况下,Select2会在用户改变搜索内容时立即触发AJAX请求。使用delay参数后,Select会在用户完成输入后,等待delay参数设置的毫秒之后才触发AJAX请求
minimumInputLength 用于设置用户需要输入的最小字母数,小于该字母数时Select2不会触发AJAX请求
maximumInputLength 用于设置用户需要输入的最大字母数,大于该字母数时Select2不会触发AJAX请求

示例代码:

<!DOCTYPE html>
<html>
<head>
    <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    <script src="//cdn.bootcss.com/select2/4.0.3/js/select2.min.js"></script>
    <link href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="//cdn.bootcss.com/select2/4.0.3/css/select2.min.css" rel="stylesheet">

    <style>
        .img-car{

            height:20px;
            width:30px;
        }
    </style>

</head>
<body>

<label for="select2_sample">
    GeekZhou.com
    <select id="select2_sample" name="sample" style="width:75%" >
    </select>
</label>

</body>

<script>
    $(document).ready(function(){

        function formatState (state) {

            if (!state.id) { return state.text; }//未找到结果时直接跳出函数
            var $state = $(
                    '<span><img src="http://ocv7z9x4r.bkt.clouddn.com/car_logo_' + state.text + '.jpg" class="img-car" />' + state.text + '</span>'
            );//将API返回的结果转换为模板
            return $state;
        }

        $("#select2_sample").select2({

            minimumInputLength: 2,
            maximumInputLength: 5,
            ajax: {

                delay   : 500,
                url     : "http://123.57.28.146:8088/sample",//请求的API地址
                dataType: 'json',//数据类型
                data    : function(params){

                    return {
                        q   : params.term,//此处是最终传递给API的参数
                    }
                },
                results : function(data){ return data;}//返回的结果

            },
            templateResult: formatState//模板化
        });//启动select2

原文地址:https://segmentfault.com/a/1190000006792406?_ea=1131053



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Select2是一种基于jQuery库的下拉选择框,可以帮助你更快捷、更方便地处理复杂的下拉列表。在这里,我们将提供一个简单的使用教程,帮助您快速上手Select2。 1. 下载和引用Select2 首先,您需要从官方网站下载Select2插件。下载完成后,在您的HTML页面中引用Select2的CSS和JS文件: ```html <link href="select2.min.css" rel="stylesheet" /> <script src="jquery.min.js"></script> <script src="select2.min.js"></script> ``` 2. 创建下拉框 在你的HTML文件中,你需要创建一个下拉框元素: ```html <select id="mySelect"></select> ``` 3. 初始化Select2 初始化Select2非常简单,只需在您的JavaScript文件中添加以下代码: ```javascript $(document).ready(function() { $('#mySelect').select2(); }); ``` 现在你的Select2下拉框已经准备好了!但是它还是空的,接下来我们将介绍如何使用Select2来添加选项。 4. 添加选项 添加选项非常简单,只需在下拉框中添加option元素即可。例如: ```html <select id="mySelect"> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> ``` 但是,如果您有大量的选项,手动添加它们会变得非常繁琐。在这种情况下,您可以使用Select2提供的AJAX加载选项的功能。我们将在下一步中介绍这个功能。 5. AJAX加载选项 使用AJAX加载选项,可以从服务器动态获取选项并将它们添加到Select2下拉框中。以下是一个简单的AJAX示例: ```javascript $(document).ready(function() { $('#mySelect').select2({ ajax: { url: 'http://example.com/api/options', dataType: 'json', processResults: function(data) { return { results: data }; } } }); }); ``` 在这个例子中,我们向Select2提供了一个AJAX请求的URL,并指定了响应数据的类型(JSON)。processResults函数用于处理服务器响应,并将结果返回给Select2。 6. 高级Select2 Select2插件还提供了许多高级功能,例如: - 主题 - 使用不同的主题来定制您的Select2下拉框 - 事件 - 使用事件来响应用户的行为,例如选中选项或打开下拉框 - 模板 - 使用模板来自定义选项的外观和行为 您可以在官方文档中了解更多关于这些高级功能的信息。 总结 在本教程中,我们介绍了如何使用Select2插件创建和自定义下拉框。我们介绍了如何添加选项,使用AJAX加载选项,并提供了一些高级功能的概述。希望这个教程能够帮助您更好地理解和使用Select2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值