1.在做项目的过程中,经常用到select2,它比select下拉框方便,经常有一些需求就是select搜出来显示的和回显到select框上的结果不一样。 效果图如下:
下拉框搜索展示的
下拉框回显的值
代码如下:
代码中的加号是个人需要效果,根据自己需求自行调节
function formatSelectB(repo) {
let split = repo.text.split("+");
return split[0];
}
//select2赋值操作
function formatRepo(repo) {
if (repo.loading) {
return repo.text;
}
var $container = $(
"<div class='select2-result-repository clearfix'>" +
"<div class='select2-result-repository__meta'>" +
"<div class='select2-result-repository__title'></div>" +
"</div>" +
"</div>"
);
$container.find(".select2-result-repository__title").text(repo.text);
return $container;
}
allowClear设置为true,会有一个清除作用(蓝色框中)
$('#A').select2({
placeholder: "请输入",
language: "zh-CN",
minimumInputLength: 0,
allowClear: true,
width: '200px',
ajax: {
url: "",
dataType: 'json',
method: 'get',
data: function (params) {
return {optionB: params.term};
},
processResults: function (data) {
var options = new Array();
$(data.data).each(function (i, o) {
var optionName = o.optionBName == null || o.optionBName == undefined ? '' : o.optionBName;
var optionType = o.optionB == null || o.optionB == undefined ? '' : o.optionB;
options.push({ //获取select2个必要的字段,id与text
id: optionType + "" + "+" + optionName,
text: optionType + "" + "+" + optionName
});
});
return {
results: options //返回数据
};
},
cache: true
},
templateResult: formatRepo,
templateSelection: formatSelectB
});
html代码如下:
<select class="form-control " id="A" required>
</select>
如果直接回显,没这么麻烦,删掉引用的这俩就ok
以上over,欢迎补充。