我在这个项目中使用 select2 4.0.0。关于这个问题的许多其他评论和想法似乎是针对以前版本的 select2,所以我决定发布一个新问题。
我在一个页面上有一个 select2 ,它既可以在数据库中创建条目,也可以在数据库中编辑条目。select2 在用户输入几个字母后由 ajax 动态填充,他们可以选择一个值。当他们需要选择一个条目时,这适用于创建条目。
在同一页面上,他们可以单击现有条目以显示更多信息并在同一表单中编辑条目。这还需要使用正确的选择文本更新 select2 元素,并更新支持 select2 的 select 元素。由于这通常是通过 ajax 完成的,因此标记通常不存在。
我已经尝试阅读 select2 的文档,但我发现它有点杂乱无章。select2 是否提供任何功能来实现这一点?我需要手动创建和更新所有标记吗?我看过一个dataAdapter,但我不确定这是否是我需要的。
HTML:
<select class="form-control" name="entry" id="select_field" data-url="/entry/search"></select>
select2 元素的代码:
$("#select_field").select2({
placeholder: "Search",
minimumInputLength: 2,
allowClear: true,
ajax: {
cache: true,
delay: 250,
method: 'POST',
url: $("#select_field").data('url'),
processResults: function (data, page) {
return {
results: data,
};
},
},
escapeMarkup: function (markup) { return markup; },
templateSelection: function (record) {
if (!record.id) { return record.text; }
return record.title;
},
templateResult: function (record) {
if (record.loading) { return record.text; }
var markup = $("<div>").text(record.title);
return markup.html();
},
});