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改变Session的值(用ajax实现)
Dec 28 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
May 08 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
javascript函数式编程基础
Sep 15 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+mysql分页代码详解
2008/03/27 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
javascript String 对象
2008/04/25 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
js实现3D旋转相册
2020/08/02 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
用Python写一个自动木马程序
2019/09/17 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
会计电算化应届生求职信
2013/11/03 职场文书
自主招生自荐信格式
2013/12/03 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python