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 相关文章推荐
js获取下拉列表的值和元素个数示例
May 07 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
May 11 Javascript
jquery实现兼容IE8的异步上传文件
Jun 15 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
vue2.0使用swiper组件实现轮播的示例代码
Mar 03 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
python字典多条件排序方法实例
2014/06/30 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
opencv python图像梯度实例详解
2020/02/04 Python
python3中sys.argv的实例用法
2020/04/24 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
小学教师师德感言
2014/02/10 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
小学新学期寄语
2014/04/02 职场文书
项目建议书模板
2014/05/12 职场文书
设备管理实施方案
2014/05/31 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
妇女工作先进事迹
2014/08/17 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
大学运动会通讯稿
2015/07/18 职场文书