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字典探测用户名工具
Oct 05 Javascript
JSON.stringify 语法实例讲解
Mar 14 Javascript
js 控制页面跳转的5种方法
Sep 09 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 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中date()日期函数有关参数整理
2011/07/19 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
win与linux系统中python requests 安装
2016/12/04 Python
python2.7实现爬虫网页数据
2018/05/25 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
浅析Python 序列化与反序列化
2020/08/05 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
会计毕业生求职简历的自我评价
2013/10/20 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
匿名信格式范文
2015/05/27 职场文书
同意转租证明
2015/06/24 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP