项目中用到了select2.js插件的ajax方式加载数据,在编辑数据的时候需要回显,找了很多文章,都不能正常回显,谷歌之后在官方的github上找到些蛛丝马迹,终于做了出来。
- 引js和css
- 初始化
下面是我在项目中的初始化方式。第三个函数echoSelect2就是回显数据用的。
function initSelect2(dom,url,multiple){
var subject = $(dom);
//元素
var Select2 = subject.select2({
ajax: {
url: url,
dataType: 'json',
data: function (params) {
return {
name: params.term, // 搜索参数
};
},
processResults: function (data, params) {
for (var i = 0;
i < data.length;
i++) {
data[i].id = data[i].id;
data[i].text = data[i].name;
}
return {
results: data
};
},
cache: true
},
placeholder: "请输入名称搜索",
allowClear: true,//选中之后,可手动点击删除
escapeMarkup: function (markup) { return markup;
}, // 让template的html显示效果,否则输出代码
minimumInputLength: 2,//搜索框至少要输入的长度,此处设置后需输入才显示结果
language: "zh-CN",//中文
multiple:multiple, //是否多选
width: 'resolve',
closeOnSelect:false,
templateResult: formatSubject, // 自定义下拉选项的样式模板
templateSelection: formatSubjectSelection// 自定义选中选项的样式模板
});
return Select2;
}function formatSubject(item) {
if (item.loading) return item;
var markup = ' 学科名称:' + item.name|| item.text + '
';
//markup += '这里可以添加其他选项...';
markup += ' ';
return markup;
}function formatSubjectSelection(item) {
return item.name || item.text;
}
//回显数据
function echoSelect2(dom,value){
$.each(value,function(index,value){
$(dom).append(new Option(value.name, value.id, false, true));
});
$(dom).trigger("change");
}
3.使用方式
var select2 = initSelect2("#school","/school/searchSchoolByName",true);
4. 回显方式
获取初始化数据定义成类似的数组形式:var data = https://www.it610.com/article/[{id:1001,name:“哈哈哈”}];
调用方法echoSelect2("#school",data); 就完事了
5.结果图
【Select2编辑数据回显,ajax方式加载数据】
![Select2编辑数据回显,ajax方式加载数据](https://img.it610.com/image/info8/2db7ea6125d343d0a15e46a0c0bd77a8.jpg)
文章图片
推荐阅读
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- JS|VUE学习笔记[30-46]
- 腾讯TEG实习|腾讯实习——Vue解决跨域请求
- 地图|高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)
- Pyecharts|Pyecharts 猎聘招聘数据可视化
- flex|C语言-使用goto语句从循环中跳出
- HTML+Js实战项目|在网页中实现icon小图标的几种方法
- js中国标准时间转化为年月日,时间戳