当ajax响应包含额外数据时,有没有办法让select2控件自动选择项目。
我想将我的控制器实现在JsonResult标记项中作为精确马赫,然后选择2控制自动选择那个而不打开下拉。
来自用户预先指定: 如果用户键入select2文本框字符串,该字符串与控制器上的项完全匹配。例如如果用户输入条形码和控制器方法找到条形码。 Select2控件将立即选择该项而不打开下拉列表。
如果用户输入的查询不完全匹配控制器将返回没有param exact的项目列表,select2将打开下拉列表以显示用户可能选择的项目。
答案 0 :(得分:1)
要使用AJAX执行此操作,您需要将选定的选项添加到select DOM元素,然后在select2小部件上触发更改,以便重绘。以下可能是您正在寻找的。此示例使用processResults检查是否只有一个匹配,并且它与用户输入的内容完全匹配。
$("#product_id").select2({
ajax: {
url: "/api/productLookup",
dataType: 'json',
data: function (params) {
return {
term: params.term,
};
},
processResults: function (data) {
var searchTerm = $("#product_id").data("select2").$dropdown.find("input").val();
if (data.results.length == 1 && data.results[0].text == searchTerm) {
$("#product_id").append($("<option />")
.attr("value", data.results[0].id)
.html(data.results[0].text)
).val(data.results[0].id).trigger("change").select2("close");
}
return data;
},
minimumInputLength: 8,
cache: true
}
});