我再次进行 3.5 -> 4.0 升级,并且“几乎”让这个用例像以前一样工作。我现在坚持的是如何始终将某个选项添加到 ajax 结果列表中。
这是我现在拥有的:
html:
<select id="vedit-filter" name="settings[filter]" class="form-control select2">
<option value="default" selected="">default</option>
</select>
js:
$("#vedit-filter").select2({
placeholder: "Select or enter application...",
allowClear: true,
multiple: false,
tags: true,
ajax: {
dataType: 'json',
delay: 1000,
type: 'post',
url: '/process/get_application_list.php',
data: function (term, page) {
return {
term: term, // search term
page_limit: 25, // page size
page: page // page number
};
},
results: function (data, page) {
var more = (page * 25) < data.total; // whether or not there are more results available
return {
results: data.results,
more: more
};
}
}
});
这将加载“默认”作为初始选择的选项。如果用户改变了这个,那么它就消失了。如果需要,我想要一种方法让他们恢复到最初的选择。将它作为选项包含在我从 ajax 返回的结果中的唯一方法是什么?或者有没有办法在js端做到这一点?
更新:
默认选择将始终是动态的,但在此示例中,我们使用的值/名称为“默认”。
<select id="vedit-filter" name="settings[filter]" class="form-control select2">
<option value="default" selected="">default</option>
</select>
然后在js中:
var default_filter = $("#vedit-filter").val(); //get the default loaded from the html
placeholder: {
id: default_filter, // or whatever the placeholder value is
text: default_filter // the text to display as the placeholder
},