- 1.组件说明
Select2参数文档说明:https://select2.github.io/options.html
Select2源码:https://github.com/select2/select2
使用select2首先需要引入其js及css文件
官网下载地址:https://select2.org/getting-started/installation
csdn下载地址:https://download.csdn.net/download/u012669164/11001682
select2-bootstrap.css是bootstrap风格的select2样式,应用该文件后不需要引入默认样式
- 2.组件使用效果
文章图片
设置最多只能选几个
文章图片
远程搜索功能,输入文本动态后台过滤
文章图片
滚动条滚动到底部自动加载剩余项
文章图片
- 3.使用代码示例
使用js初始化,加载远程数据
$('#territorialId').select2({
language:"zn-CN",
placeholder:'请选择',
allowClear: true,//可以清除选项
ajax: {
url: "/territorial/listSelect",
data: function (params) {
return {
keyWord: params.term || '',//搜索参数
page: params.page || 1,//分页参数
rows: params.pagesize || 10,//每次查询10条记录
};
},
processResults: function (data, params) {
params.page = params.page || 1;
var list = data.list;
list = $.map(list, function (obj) {
obj.text = obj.text || obj.terrName;
return obj;
});
return {
results:list,
pagination: {
more: (params.page) < data.totalPage
}
};
}
}
});
1.url是请求的后台地址
2.使用后台动态加载数据时传入请求参数params
3.processResults接收后台返回数据,该回调函数返回一个对象,包含results、pagination属性,后台分也是必须返回pagination,pagination中的more用来判断是否还有下一页
4.results属性为js对象数据,数组元素中必须包含id,text属性
【jQuery|下拉插件select2使用总结】list = $.map(list, function (obj) {
obj.text = obj.text || obj.terrName;
return obj;
});
这段代码用来将返回数组中terrName替换为text
- 后台代码
@ResponseBody
public Object listSelect(Select2QueryParamsDto param) {
EntityWrapper
Wrapper
if (null != param.getKeyWord() && !"".equals(param.getKeyWord().trim())) {
wrapper.like("terr_name", param.getKeyWord());
}
List
return Select2Util.initSelectResponse(list,param);
}
后台使用mybatisplus,所以采用这种查询数据的方式,可以自己xiesql查询数据
Select2QueryParamsDto.java
public class Select2QueryParamsDto {
private String keyWord;
private Integer page;
private Integer rows;
}
getter、setter方法省略
Select2Util.java
public class Select2Util {
@SuppressWarnings("rawtypes")
public static Map initSelectResponse(List list,Select2QueryParamsDto param){
Map map = new HashMap<>();
int startIndex = param.getPage().intValue() - 1;
int endIndex = param.getPage().intValue() * param.getRows().intValue() - 1;
double totalPage = Math.ceil((double)list.size() /(double) param.getRows().intValue());
if(list.size() < endIndex) {
list = list.subList(startIndex, list.size());
}else {
list = list.subList(startIndex, endIndex);
}
map.put("list", list);
map.put("totalPage", totalPage);
return map;
}
}
- 使用方法
$("#projectId").on("change", function (e) {
var value= https://www.it610.com/article/$("#territorialId").select2("val");
if(null != value && "" != value){
//do something
}
});
获取选中值
$("#territorialId").select2("val");
取消选中
$("#territorialId").select2("val","all");
编辑/修改页面中设置默认选中值
如果是从后台加载下拉选项数据,select2是在点击时加载数据,需要页面加载完就设置值就得手动添加
var option = new Option(text, id, true, true); $("#dictCode").append(option); $("#dictCode").trigger('change');
希望能持续更新
推荐阅读
- 针对 jQuery 的优化方法有哪些
- javascript|关于input的change事件触发多次发解决
- jquery Colorbox 传值
- Jquery 操作 Frame示例
- 代码记录|jquery获取select框的值、单选框的值、textarea的值、获取input框的值
- jQuery Infinite Ajax Scroll(ias) 分页插件介绍
- jQuery|jQuery 基础教程目录
- jquery.ui.droppable中文文档
- JS|Swiper插件的简单使用
- jquery|总结jQuery/js常用方法