selet2是一款input+selet结合的组件,是最好的搜索下拉框,没有之一。原因是别的没有,只有它这么一家,你没得选择。正如有人说它‘Select2不是特别好用,但又找不到比它更好的下拉框插件。’

网上对它的介绍零零碎碎,又不是特别的全面,下边我就总结了一番

单选

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="plugs/select2/css/select2.min.css" />
<style>
.mysel{width: 100px;}
button{margin-top: 10px; display: block;}
</style>
</head>
<body>
<select class="mysel"></select>
<button>取值</button>
<script src="plugs/jquery-3.2.1.min.js" ></script>
<script src="plugs/select2/js/select2.full.min.js" ></script>
<script src="plugs/select2/js/i18n/zh-CN.js" ></script>
<script type="text/javascript">
//后端返回的数据
var data = [
{id:123,text:"张三",say:"呵呵"},
{id:234,text:"李四",say:"中国"},
{id:345,text:"wang",say:"你懂个屁"},
{id:456,text:"张老大",say:"okok"}
];
$(".mysel").select2({
data: data,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN'
})
$("button").click(function(){
var res=$(".mysel").select2("data");
console.log(res[0])//获取选中项
console.log($(".mysel").val())//获取选中的值(id)
//tip:推荐使用第一种获取值的返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].say
})
</script>
</body>
</html>

特别说明:他对数据结构有要求,选项opion的对象,必须包含两个属性,id和text。id是用于取值val的,text是用于显示出来看的

多选

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="plugs/select2/css/select2.min.css" />
<style>
.mysel{width: 200px;}
button{margin-top: 10px; display: block;}
</style>
</head>
<body>
<select class="mysel"></select>
<button>取值</button>
<script src="plugs/jquery-3.2.1.min.js" ></script>
<script src="plugs/select2/js/select2.full.min.js" ></script>
<script src="plugs/select2/js/i18n/zh-CN.js" ></script>
<script type="text/javascript">
//后端返回的数据
var data = [
{id:123,text:"张三",say:"呵呵"},
{id:234,text:"李四",say:"中国"},
{id:345,text:"wang",say:"你懂个屁"},
{id:456,text:"张老大",say:"okok"}
];
$(".mysel").select2({
data: data,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN',
multiple: true
})
$("button").click(function(){
var res=$(".mysel").select2("data");
console.log(res)//获取选中项
console.log($(".mysel").val())//获取选中的值(id)
//tip:推荐使用第一种获取值的返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].say
})
</script>
</body>
</html>

设置选中项

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="plugs/select2/css/select2.min.css" />
<style>
.mysel{width: 200px;}
button{margin-top: 10px; display: block; }
</style>
</head>
<body>
<select class="mysel"></select>
<button>选中某项</button>
<button>清空选中</button>
<script src="plugs/jquery-3.2.1.min.js" ></script>
<script src="plugs/select2/js/select2.full.min.js" ></script>
<script src="plugs/select2/js/i18n/zh-CN.js" ></script>
<script type="text/javascript">
//后端返回的数据
var data = [
{id:123,text:"张三",say:"呵呵"},
{id:234,text:"李四",say:"中国"},
{id:345,text:"wang",say:"你懂个屁"},
{id:456,text:"张老大",say:"okok"}
];
$(".mysel").select2({
data: data,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN'
}) $("button:nth-of-type(1)").click(function(){
//手动模拟选中某一条
$(".mysel").val("345").trigger("change");
})
$("button:nth-of-type(2)").click(function(){
//手动清空选中项
$(".mysel").val(null).trigger("change");
}) $(".mysel").change(function(){alert("我被触发啦!")}) /*
tip:
1、单选初始化会默认选中第一条,而多选则默认为空
2、即便是模拟选中和清空,也会触发change事件(但是单选首次进入,插件自己默认选中的第一个不会触发change事件)
*/
</script>
</body>
</html>

动态更新option

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="plugs/select2/css/select2.min.css" />
<style>
.mysel{width: 200px;}
button{margin-top: 10px; display: block; }
</style>
</head>
<body>
<select class="mysel"></select>
<button>ajax</button>
<script src="plugs/jquery-3.2.1.min.js" ></script>
<script src="plugs/select2/js/select2.full.min.js" ></script>
<script src="plugs/select2/js/i18n/zh-CN.js" ></script>
<script type="text/javascript">
//后端返回的数据
var data = [
{id:123,text:"张三",say:"呵呵"},
{id:234,text:"李四",say:"中国"}
];
$(".mysel").select2({
data: data,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN'
}) $("button").click(function(){
//模拟后端请求的数据
var ajxData=[
{id:345,text:"wang",say:"你懂个屁"},
{id:456,text:"张老大",say:"okok"}
] $(".mysel").empty();//注意清空之前的option,否则会累加
$(".mysel").select2({
data: ajxData,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN'
}) }) /*tip:异步请求数据,selet2有专门做的封装处理,但是我不喜欢用*/
</script>
</body>
</html>

其它一些配置,网上就很好找了,参考其它人的网站博客:
http://www.cnblogs.com/liuxiaobo93/p/5112993.html
http://www.cnblogs.com/zzsdream/p/5665520.html

集成进入angular
这里我封装了个指令,封装的代码你们下载自己看,使用代码如下

<html>
<head>
<title></title>
<meta charset="utf-8" />
<link rel="stylesheet" href="lib/bootstrap/bootstrap.css" />
<link rel="stylesheet" href="lib/select2/select2.css" />
<link rel="stylesheet" href="lib/select2/select2-bootstrap.css" />
<link rel="stylesheet" href="select2Dire/main.css" />
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<select2 cfg='mycfg' vlue='myval'></select2>
<button ng-click="save()">提交</button> <script src="lib/jquery-3.2.1.min.js" ></script>
<script src="lib/bootstrap/bootstrap.js" ></script>
<script src="lib/angular.js" ></script>
<script src="lib/select2/select2.js" ></script>
<script src="select2Dire/main.js" ></script>
<script>
var app = angular.module('myApp', ['ngSelect2']);
app.controller('myCtrl', function($scope,$http) {
$http.get('http://47.93.52.112:1234/').then(function(rep){
$scope.mycfg={
data: rep.data,
placeholder:'请选择',
allowClear:true,
language: 'zh-CN',
multiple: true
}
}); $scope.save=function(){
console.log($scope.myval)
}
});
</script>
</body>
</html>

效果演示

源码下载
https://gitee.com/dingshao/angular_select2.git

参考
http://www.angularjs.cn/A0AE
https://github.com/think2011/angularjs-select2

selet2使用大全的更多相关文章

  1. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  2. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  3. .NET Core dotnet 命令大全

    dotnet 命令大全,让你理解dotnet 命令. 本文将以一个实例串起 dotnet 所有命令,让你玩转dotnet 命令. 本篇文章编写环境为windows 10 ,dotnet 命令同样适用于 ...

  4. Python 资源大全中文版

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  5. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  6. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  7. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

  8. iOS中NSLog输出格式大全

    iOS开发中的输出格式大全: %@                   对象 %d, %i               整数%u                    无符整形%f           ...

  9. 织梦dedecms漏洞修复大全(5.7起)

    很多人说dedecms不好,因为用的人多了,找漏洞的人也多了,那么如果我们能修复的话,这些都不是问题. 好,我们来一个一个修复.修复方法都是下载目录下该文件,然后替换或添加部分代码,保存后上传覆盖(记 ...

随机推荐

  1. css3学习笔记(一)

    1. IE下的渐变:  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='# ...

  2. ASP.NET控件属性大全

    ASP.NET控件属性大全 DataGridView 控件DataGridView 控件提供用来显示数据的可自定义表.使用 DataGridView 类,可以自定义单元格.行.列和边框. 注意Data ...

  3. Django 最佳实践

    不错的Django实践规范,转自Github: https://github.com/brantyoung/zh-django-best-practices/blob/master/readme.rs ...

  4. 使用Using的注意事项

    参数传递 C#中有四种参数类型:值类型,Ref参数,Out参数,params参数.默认参数都是以传值方式传递,这意味着方法中的变量会在内存中被分配新的存储空间,并赋值.对于引用类型,这种传值意味着传递 ...

  5. debug命令

    debug -r 查看寄存器-a 输入指令-t 执形命令 通用寄存器:AX=AH+ALBX=BH+BLCX=CH+CLDX=DH+DL 2Byte 16bitFFFF0-(2的16次方减1) debu ...

  6. OpenWrt 安装usb支持

    (一)下载软件 1)komd-usb-ohci kmod-usb2 kmod-usb-storage kmod-usb-core 这些是USB驱动包 2) kmod-nls-base kmod-nls ...

  7. Laravel5.1 模型 --多态关联

    什么是多态关联? 一个例子你就明白了:好比如说评论 它可以属于视频类 也可以属于文章类,当有个需求是 从评论表中取到视频类的数据,这就需要用到多态关联了. 简单的一句话总结:一张表对应两张表. 1 实 ...

  8. JVM难学?那是因为你没认真看完这篇文章(转)

    一:虚拟机内存图解 JAVA程序运行与虚拟机之上,运行时需要内存空间.虚拟机执行JAVA程序的过程中会把它管理的内存划分为不同的数据区域方便管理. 虚拟机管理内存数据区域划分如下图: 数据区域分类: ...

  9. ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]

    今天第一次遇到Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误,并且在错误提示的后半段出现了 ...

  10. 编写高质量代码–改善python程序的建议(五)

    原文发表在我的博客主页,转载请注明出处! 建议二十三:遵循异常处理的几点基本原则 python中常用的异常处理语法是try.except.else.finally,它们可以有多种组合,语法形式如下: ...