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 相关文章推荐
jQuery事件用法实例汇总
Aug 29 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
svg动画之动态描边效果
Feb 22 Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
JavaScript正则表达式和级联效果
Sep 14 Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 Javascript
Vue中使用的EventBus有生命周期
Jul 12 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
django简单的前后端分离的数据传输实例 axios
May 18 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
微信小程序 绘图之饼图实现
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 引用文件技巧
2010/03/02 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
10个Python小技巧你值得拥有
2018/09/29 Python
信号生成及DFT的python实现方式
2020/02/25 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
python网络编程之五子棋游戏
2020/05/14 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
中医药大学毕业生自荐信
2013/11/08 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
教师读书笔记
2015/06/29 职场文书
关于军训的感想
2015/08/07 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
微信小程序调用python模型
2022/04/21 Python