tnblog
首页
视频
资源
登录

使用select2实现下拉框中显示图片

14413人阅读 2019/4/25 15:58 总访问:143319 评论:3 收藏:0 手机
分类: 前端

使用select2插件需要引用select2.min.js、select2.min.css文件

1、CDN引用方式:

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>

2、下载文件后本地引用(手动安装)

<link href="path/to/select2.min.css" rel="stylesheet" />

<script src="path/to/select2.min.js"></script>

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

select2依赖于jQuery选择器,所以还得引入jQuery

<script src="/Scripts/jquery-1.10.2.js"></script>

官网推荐使用CDN,虽然这样的引用方式容易部属和更新还节约流量,但是不能做一些定制化的操作,比如修改提示,具体看个人需求。


select2 有两种数据集填充方式:固定方式获取(页面写死)和远程方式获取(select2内置了ajax)


Select2将自己注册为jQuery函数,因此您可以调用.select2()任何你想初始化Select2的jQuery选择器上。


一、固定方式:

    html代码:

  1. <body style="margin-left:2%">
  2.     <div>
  3.     <h2><label>固定方式获取</label></h2>
  4.         <p>
  5.             <label>单选:</label>
  6.             <select class="form-control" style="width: 50%" id="sel_1">
  7.                 <option value="root">ROOT</option>
  8.                 <option value="aojiancc">傲剑</option>
  9.                 <option value="huangleicc">黄磊</option>
  10.             </select>
  11.         </p>
  12.         <p>
  13.             <label>分组多选:</label>
  14.             <select class="form-control" style="width: 50%" multiple="multiple" id="sel_2">
  15.                 <optgroup label="管理员">
  16.                     <option value="root">ROOT</option>
  17.                 </optgroup>
  18.                 <optgroup label="用户">
  19.                     <option value="aojiancc">傲剑</option>
  20.                     <option value="huangleicc">黄磊</option>
  21.                 </optgroup>
  22.             </select>
  23.         </p>
  24.         <p>
  25.             <label>图文结合:</label>
  26.             <select class="js-example-templating js-states form-control" style="width: 50%" multiple="multiple" id="sel_3">
  27.                 <optgroup label="管理员">
  28.                     <option value="root">ROOT</option>
  29.                 </optgroup>
  30.                 <optgroup label="用户">
  31.                     <option value="aojiancc">傲剑</option>
  32.                     <option value="huangleicc">黄磊</option>
  33.                 </optgroup>
  34.             </select>
  35.         </p>
  36.     </div>
  37. </body>

    JS代码:

  1. <script>
  2.     //单选
  3.     $(document).ready(function ({
  4.         $('#sel_1').select2();
  5.             
  6.          //设置最多能够选择的个数
  7.          $("#sel_2").select2({
  8.             tagstrue,
  9.             placeholder'请选择',
  10.             maximumSelectionLength2 //最多能够选择的个数
  11.          });
  12.          //带图片
  13.          $("#sel_3").select2({
  14.              placeholder'请选择',
  15.              templateResult: formatStateResult,//选择时
  16.              templateSelection: formatStateSelection//选择后
  17.          });
  18.             
  19.      });
  20.      //填充图片
  21.      function formatStateResult(state{
  22.          if (!state.id) { return state.text; }
  23.          var $state = $(
  24.              '<span><img src="/img/a5.jpg" style="width: 5%;height:5%" class="img-flag" /> ' + state.text + '</span>'
  25.          );
  26.          return $state;
  27.      };
  28.      function formatStateSelection(state{
  29.          if (!state.id) { return state.text; }
  30.          var $state = $(
  31.              '<span><img src="/img/a5.jpg" style="width: 10%;height:10%" class="img-flag" /> ' + state.text + '</span>'
  32.          );
  33.          return $state;
  34.      };
  35. </script>

效果:

    单选:

    

二、ajax获取方式(以最复杂的分页多选且显示图片为例):

    html代码:

  1. <body style="margin-left:2%">
  2.     <div>
  3.         <h2><label>远程方式获取</label></h2>
  4.         <p>
  5.             <label>图文结合:</label>
  6.             <select class="js-example-data-ajax js-states form-control" style="width: 50%" multiple="multiple" id="sel_4">
  7.                 <option></option>
  8.             </select>
  9.         </p>
  10.     </div>
  11. </body>

    JS代码:

  1. <script>
  2. $(document).ready(function ({
  3. $("#sel_4").select2({
  4. ajax: {
  5. url'/ExportExcel/GetPageListJson',
  6. dataType'json',
  7. delay1000,// 搜索延迟显示
  8. //data:参数
  9. data: function (params{
  10. return {
  11. LikeVar: params.term, // 搜索框值
  12. page: params.page || 1,//分页,当前页
  13. rows: 2//每页容量
  14. };
  15. },
  16. //数据集处理
  17. processResults: function (data, params{
  18.     params.page = params.page  || 1;
  19.     return {
  20.         //这里是返回的数据:数据格式必须遵循select2格式 如:{ id: 1, text: 'aojian' }, { id: 2, text: 'dahuang' }];
  21. results: data.rows,
  22. pagination: {
  23.     //more:表示下拉刷新,data.total表示总页数,这里的意思是当前页小于总页数的时候就显示下拉分页
  24.     more: (params.page) < data.total
  25.          }
  26.     };
  27. },
  28. cachetrue
  29. },
  30. placeholder'请选择',//默认文字提示
  31. language: "zh-CN",//语言
  32. tags: true,//允许手动添加
  33. allowClear: true,//允许清空
  34. escapeMarkup: function (markupreturn markup; }, // 自定义格式化防止xss注入
  35. minimumInputLength: 1,//输入几个字符后开始查询,1:表示一个字符
  36. templateResult: formatRepoProvince, //显示的结果集格式,这里需要自己写css样式
  37. templateSelection: formatRepoProvince //选择某一项后显示到文本框的内容
  38. });
  39. //$("#sel_4").trigger('change');//使用append拼接时需重新渲染
  40. });
  41. //编写样式
  42. function formatRepoProvince(repo{
  43. console.log(repo);
  44. if (repo.loading) return repo.text;
  45. var imgs = repo.img;
  46. imgs = imgs.substring(1, imgs.length);
  47. var markup = '<span><img src="' + imgs + '" style="width: 5%;height:5%" class="img-flag"/> ' + repo.text + '</span>';
  48. return markup;
  49. }
  50. </script>

效果:


设置默认值:   

  1. $('#sel_4').val(['2']).trigger('change');//其中2是id或者value的值,是list格式。change是固定值


后台代码有很多自己的逻辑的封装就不贴出来了,其他的样式调整和一些细节也不列出来了,想要深入了解的可以去官网查看官方文档

地址:https://select2.org/  



    

评价

饰心

2019/4/25 16:03:34

嗯~刚好差不多下班[哈欠]

剑轩:@饰心安逸这么早就下班了

2019/4/25 17:01:02 回复

剑轩

2019/4/25 17:00:43

秀啊.....,飞常不错

NET Core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

使用OLEDB读取不同版本Excel的连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///&lt;summary&gt; ///读取excel ///&lt;/su...

C 使用CancellationTokenSource取消多线程

有时间我们在使用多线程的时候,需要取消线程的执行,可以使用CancellationTokenSource来取消对Task开辟多线程的取消如下:...

使用爬虫刷csdn博客访问量

首先了解一下常见反爬虫的检测方法频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超...

Idea下使用maven搭建SSM(一):SpringMVC

Spring MVC是一款基于MVC架构模式的轻量级Web框架,其目的是将Web开发模块化,对整体架构进行解耦,简化Web开发流程。下面...

Idea下使用maven搭建SSM(二):MyBatis

开发Web应用,数据的存储和处理往往离不开数据库和SQL语句。在使用Java开发的Web应用中,自然也少不了连接数据库的步骤。在...

使用 微软自带语音合成类库

//引入语音合成名称空间 usingSystem.Speech.Synthesis; classA { voidtest1() { //实例化并指定字符串播放合成读音 ...

如何使用图标像使用文字一样,使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务,提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

使用OutLook发送邮件

publicstaticvoidOutlook(stringSubject,stringTextBody,stringFromAdd,stringFromPass,stringTo,stringCC,List&lt;string&...

SQL Server 中使用游标

--声明一个游标 DECLAREMyCursorCURSOR FORSELECTTOP5FBookName,FBookCodingFROMTBookInfo//定义一个叫MyCursor的游标,...

Windows使用wireshark抓包小心得

wireshrak是个网络抓包工具,常用。但是在数据较大的网络环境中直接使用软件抓包会导致wireshark卡死。为什么呢 ?网卡瞬间...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...
Decorating heart
排名
22
文章
14
粉丝
21
评论
27
腾讯防水墙
赖成龙 : 学长你有下载好的js文件吗
使用 JSON WEB TOKEN (jwt) 验证
饰心 : 由于最近换了新的工作环境,还在挖煤中。后续会增加博客更新频率。
腾讯防水墙
饰心 : @剑轩,快去给tnblog弄一个
使用select2实现下拉框中显示图片
剑轩 : 秀啊.....,飞常不错
使用select2实现下拉框中显示图片
饰心 : 嗯~刚好差不多下班
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
但是,这一次你将不再孤独。