Select2.js下拉框使用小结


Posted in Javascript onOctober 24, 2016

用了这么久的Select2插件,也该写篇文章总结总结。当初感觉Select2不是特别好用,但又找不到比它更好的下拉框插件。

在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下方法参数,比最初版本要好看一些,本文针对新版本。

官网:http://select2.github.io/

演示:

Select2.js下拉框使用小结

由于博客系统的原因,所以只能演示简单的功能。

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

最新版本的select2如果引用的jquery版本较低的话,某些功能无法正常使用。比如:清除功能allowClear: true

最新版本请使用<select></select>标签(对于本地化的数据你可以使用input,但ajax远程数据必须使用select)

二.placeholder

placeholder占位提示文字,如果需要清楚功能,则必须设置placeholder。

三.加载本地数据

select2默认的数据属性是id、text,新版本可以自定义,但还是用默认的比较好。所以提供的json中最好转换为id、text形式,当然可以添加其他属性。

var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
$("#c01-select").select2({
 data: data,
 placeholder:'请选择',
 allowClear:true
})

四.加载远程数据

$("#c01-select").select2({
 ajax: {
 url: "data.json",
 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: 1,
 templateResult: formatRepo, 
 templateSelection: formatRepoSelection 
});

说明:

     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'}]

五.获取选中项

var res=$("#c01-select").select2("data")[0] ; //单选
var reslist=$("#c01-select").select2("data"); //多选
if(res==undefined)
{
 alert("你没有选中任何项");
}
if(reslist.length)
{
 alert("你选中任何项");
}

六.清空选择项和设置不可用

//清空选择
$("#c01-select").val(null).trigger("change");
$("#c01-select").val("你的placeholder").trigger("change");//或者
//如果你使用的是input标签(默认就是本地数据),你可以用$("#c01-select").val('');来清空选项
//disabled
$("#c01-select").prop("disabled", false);//可用
$("#c01-select").prop("disabled", true);//不可用

七.启用多选

$("#c01-select").select2({
 data:data,
 multiple: true
});

多选演示:

Select2.js下拉框使用小结

八.下面简单说明新版与老版对比

1.结果回调和选中回调名称:formatResult、formatSelection(老版);templateResult、templateSelection(新版)

2.初始化:

//老版,注意如果初始化时文本框中本身没有值(为空),则不会触发该方法
initSelection: function (element, callback) {
 var id = $(element).val();
 var data = { id: id, text: id};//这里是初始化的数据,你可以通过id来从服务器上获取(ajax),再装载进去
 callback(data);
}

//新版,直接给select添加option
$("#id").append(new Option("Jquery", 10001, false, true));
//或者
$("#id").append("<option value='10001'>Jquery</option>");

3.获取或设置值:select2("val")(老版);$("select").val()(新版)

推荐使用

var res = $("#id").select2("data");
//返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].names

4.停用或启用:$("select").enable(false);(老版);$("select").prop("disabled", true);(新版)

5.主题样式:新版的样式已经更新,但如果想使用老版样式则可以设置 theme: "classic"

如果大家还想深入学习,可以点击jquery下拉框效果汇总、JavaScript下拉框效果汇总进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript第一课
Feb 27 Javascript
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
JS对象与JSON格式数据相互转换
Feb 20 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
Jquery网页内滑动缓冲导航的实现代码
Apr 05 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 Javascript
canvas实现绘制吃豆鱼效果
Jan 12 Javascript
vue的keep-alive中使用EventBus的方法
Apr 23 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
对Layer弹窗使用及返回数据接收的实例详解
Sep 26 Javascript
微信小程序 绘图之饼图实现
Oct 24 #Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 #Javascript
微信小程序 富文本转文本实例详解
Oct 24 #Javascript
微信小程序 参数传递详解
Oct 24 #Javascript
10分钟掌握XML、JSON及其解析
Dec 06 #Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 #Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 #Javascript
You might like
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python之信息加密题目详解
2019/06/26 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python join方法使用详解
2019/07/30 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
Python datetime 如何处理时区信息
2020/09/02 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
医学专业大学生求职的自我评价
2013/11/27 职场文书
大四本科生的自我评价
2013/12/30 职场文书
个人简历中自我评价
2014/02/11 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技