目錄
一、组件说明以及API说明
二、组件特性效果展示
1、多选效果
2、图文结合的效果
3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)
三、代码示例
首頁 web前端 html教學 JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose

JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose

Jun 21, 2016 am 09:00 AM

前言:在介绍select组件的时候,博主之前分享过一篇 JS组件系列——两种bootstrap multiselect组件大比拼 ,这两个组件的功能确实很强大,只可惜没有图文结合的效果(也就是将图片放入到select里面随着文字一起显示)。前两天做一个菜单图标选择的功能,就要用到这个图文选择的功能。于是乎又是找啊找。终于不负所望,找到了我们伟大的select2组件。今天分享下这个组件的一些用法和特性。

一、组件说明以及API说明

Select2使用示例地址: https://select2.github.io/examples.html

Select2参数文档说明: https://select2.github.io/options.html

Select2源码: https://github.com/select2/select2

二、组件特性效果展示

一些通用的单选、多选、分组等功能这里就不多做介绍了,multiselect这方面是强项。重点介绍下select2的一些特性效果:

1、多选效果

可以设置最多只能选几个

2、图文结合的效果

3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)

输入内容前

输入空格搜索出全部

滚动条滑动到底部自动加载剩余项

输入文本动态去后台过滤

更高级的用法如:

其实使用起来也不难,就是一个拼html的过程。

三、代码示例

1、多选效果

select2的多选很简单,设置一个属性就好了。

   <script src="~/Scripts/jquery-1.10.2.js"></script>    <script src="~/Content/bootstrap/js/bootstrap.js"></script>    <link href="~/Content/bootstrap/css/bootstrap.css" rel="stylesheet" />    <script src="~/Content/select2-master/dist/js/select2.js"></script>    <link href="~/Content/select2-master/dist/css/select2.css" rel="stylesheet" />
登入後複製
  <select id="sel_menu2" multiple="multiple" class="form-control">         <optgroup label="系统设置">              <option value="1">用户管理</option>              <option value="2">角色管理</option>              <option value="3">部门管理</option>              <option value="4">菜单管理</option>         </optgroup>         <optgroup label="订单管理">              <option value="5">订单查询</option>              <option value="6">订单导入</option>              <option value="7">订单删除</option>              <option value="8">订单撤销</option>         </optgroup>         <optgroup label="基础数据">              <option value="9">基础数据维护</option>          </optgroup>     </select>
登入後複製
    //多选    $("#sel_menu2").select2({        tags: true,        maximumSelectionLength: 3  //最多能够选择的个数    });
登入後複製

2、图文结合的效果

<select id="sel_menu" class="js-example-templating js-states form-control">             <optgroup label="系统设置">                 <option value="1">用户管理</option>                 <option value="2">角色管理</option>                 <option value="3">部门管理</option>                 <option value="4">菜单管理</option>             </optgroup>             <optgroup label="订单管理">                 <option value="5">订单查询</option>                 <option value="6">订单导入</option>                 <option value="7">订单删除</option>                 <option value="8">订单撤销</option>             </optgroup>             <optgroup label="基础数据">                 <option value="9">基础数据维护</option>             </optgroup>         </select>
登入後複製
$(function () {    //带图片    $("#sel_menu").select2({        templateResult: formatState,        templateSelection: formatState    });});function formatState(state) {    if (!state.id) { return state.text; }    var $state = $(      '<span><img  src="/content/images/' + state.element.value.toLowerCase() + '.ico" class="img-flag" / alt="JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose" > ' + state.text + '</span>'    );    return $state;};
登入後複製

3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)

 <select id="sel_menu3" class="js-data-example-ajax form-control">      <option value="3620194" selected="selected">请选择</option> </select>
登入後複製
$(function () {    //远程筛选    $("#sel_menu3").select2({        ajax: {            url: "/Home/GetProvinces",            dataType: 'json',            delay: 250,            data: function (params) {                return {                    q: params.term, // search term                    page: params.page                };            },            processResults: function (data, params) {                params.page = params.page || 1;                return {                    results: data.items,                    pagination: {                        more: (params.page * 10) < data.total_count                    }                };            },            cache: true        },        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work        minimumInputLength: 1,        templateResult: formatRepoProvince, // omitted for brevity, see the source of this page        templateSelection: formatRepoProvince // omitted for brevity, see the source of this page    });});
登入後複製
function formatRepoProvince(repo) {    if (repo.loading) return repo.text;    var markup = "<div>"+repo.name+"</div>";    return markup;}
登入後複製

这里有要注意的一个地方就是processResults属性对应的方法有一个more属性用于是否分页显示的,这里的值要和你需要一次显示的值的条数匹配。

后台对应的方法如下:

public List<string> lstProvince = new List<string>() {"北京市","天津市","重庆市","上海市","河北省","山西省","辽宁省","吉林省","黑龙江省","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","海南省","四川省","贵州省","云南省","陕西省","甘肃省","青海省","台湾省","内蒙古自治区","广西壮族自治区","西藏自治区","宁夏回族自治区","新疆维吾尔自治区","香港特别行政区","澳门特别行政区" };        public JsonResult GetProvinces(string q, string page)         {            var lstRes = new List<Province>();            for (var i = 0; i < 30; i++)            {                var oProvince = new Province();                oProvince.id = i;                oProvince.name = lstProvince[i];                lstRes.Add(oProvince);            }            if (!string.IsNullOrEmpty(q.Trim()))            {                lstRes = lstRes.Where(x => x.name.Contains(q)).ToList();            }            var lstCurPageRes = string.IsNullOrEmpty(page) ? lstRes.Take(10) : lstRes.Skip(Convert.ToInt32(page) * 10 - 10).Take(10);            return Json(new { items = lstCurPageRes, total_count = lstRes.Count }, JsonRequestBehavior.AllowGet);        }
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? 公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? Mar 04, 2025 pm 12:32 PM

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?

如何使用HTML5表單驗證屬性來驗證用戶輸入? 如何使用HTML5表單驗證屬性來驗證用戶輸入? Mar 17, 2025 pm 12:27 PM

如何使用HTML5表單驗證屬性來驗證用戶輸入?

如何高效地在網頁中為PNG圖片添加描邊效果? 如何高效地在網頁中為PNG圖片添加描邊效果? Mar 04, 2025 pm 02:39 PM

如何高效地在網頁中為PNG圖片添加描邊效果?

HTML5中跨瀏覽器兼容性的最佳實踐是什麼? HTML5中跨瀏覽器兼容性的最佳實踐是什麼? Mar 17, 2025 pm 12:20 PM

HTML5中跨瀏覽器兼容性的最佳實踐是什麼?

&lt; datalist&gt;的目的是什麼。 元素? &lt; datalist&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:33 PM

&lt; datalist&gt;的目的是什麼。 元素?

我如何使用html5&lt; time&gt; 元素以語義表示日期和時間? 我如何使用html5&lt; time&gt; 元素以語義表示日期和時間? Mar 12, 2025 pm 04:05 PM

我如何使用html5&lt; time&gt; 元素以語義表示日期和時間?

&gt; gt;的目的是什麼 元素? &gt; gt;的目的是什麼 元素? Mar 21, 2025 pm 12:34 PM

&gt; gt;的目的是什麼 元素?

&lt; meter&gt;的目的是什麼。 元素? &lt; meter&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:35 PM

&lt; meter&gt;的目的是什麼。 元素?

See all articles