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复选框CHECKBOX全选,取消全选
Aug 30 Javascript
再谈ie和firefox下的document.all属性
Oct 21 Javascript
IE与FireFox中的childNodes区别
Oct 20 Javascript
JS控制输入框内字符串长度
May 21 Javascript
js调试系列 初识控制台
Jun 18 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
Mar 17 Javascript
基于JS代码实现实时显示系统时间
Jun 16 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
vue项目引入Iconfont图标库的教程图解
Oct 24 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python文本数据处理学习笔记详解
2019/06/17 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
Python常用编译器原理及特点解析
2020/03/23 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
应用艺术毕业生的自我评价
2013/12/04 职场文书
高中化学教学反思
2014/01/13 职场文书
七年级音乐教学反思
2014/01/26 职场文书
党员承诺书格式
2014/05/21 职场文书
村党支部书记承诺书
2014/05/29 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Golang 切片(Slice)实现增删改查
2022/04/22 Golang
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers