选择2 自动选择用于 AJAX 调用的项目
select2 automatically select item for ajax call
有没有办法让 select2 控件在 ajax 响应包含额外数据时自动选择一个项目。
我想实现我的控制器以在 JsonResult 中将项目标记为精确马赫,然后选择 2 个控件自动选择它而不打开下拉菜单。
从用户预设:如果用户键入与控制器上的项目完全匹配的 select2 文本框字符串。例如,如果用户输入条形码和控制器方法,则找到该条形码。Select2 控件将立即选择该项,而无需打开下拉列表。
如果用户在查询中键入的查询不完全匹配,控制器将返回没有参数的项目列表,select2 将打开下拉列表以显示用户可能选择的项目。
要使用 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
}
});
#this worked for me... using select2 with barcode
var defaultInitialGroup = '';
$("#idbarang").select2({
placeholder: "Type/ Scan your barcode item",
allowClear: true,
minimumInputLength: 2,
multiple: true,
ajax: {
url: HOST_URL + 'stock/balance/list_xxv',
type: 'POST',
dataType: 'json',
delay: 250,
data: function(params) {
return {
_search_: params.term, // search term
_page_: params.page,
_draw_: true,
_start_: 1,
_perpage_: 2,
_paramglobal_: defaultInitialGroup,
term: params.term,
};
},
processResults: function (data, params) {
var searchTerm = $("#idbarang").data("select2").$dropdown.find("input").val();
if (data.items.length === 1 && data.items[0].text === searchTerm) {
var option = new Option(data.items[0].nmbarang, data.items[0].idbarang, true, true);
$('#idbarang').append(option).trigger('change').select2("close");
// manually trigger the `select2:select` event
$('#idbarang').trigger({
type: 'select2:select',
params: {
data: data
}
});}
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
cache: false
},
escapeMarkup: function(markup) {
return markup;
}, // let our custom formatter work
templateResult: formatItem, // omitted for brevity, see the source of this page
templateSelection: formatItemSelection // omitted for brevity, see the source of this page
})
function formatItem(repo) {
if (repo.loading) return repo.text;
var markup ="<div class='select2-result-repository__description'>" + repo.idbarang +"<i class='fa fa-circle-o'></i>"+ repo.nmbarang +"</div>";
return markup;
}
function formatItemSelection(repo){
return repo.nmbarang || repo.text;
}
相关文章:
- 选择值,然后只调用函数
- 如何在页面加载angular js上设置从ajax调用中选择的选项
- 从Document调用onchange函数.已准备好从更新中预先选择的项目
- Jquery-如何获取插件调用的选择器
- 从Bootstrap Dropdown中选择后调用javascript
- jQuery选择ajax调用中附加的元素不起作用
- 如何在从下拉列表中选择不同的值后更新和调用javascript函数
- 从下拉列表中选择多个值并调用javaScript函数
- 如何调用更改事件,例如在 HTML 数据列表上选择
- 调用函数单击选择标签中的选项
- 如何在文件打开和调用图像区域选择时获取原始图像大小
- 在选择标记中的更改不调用函数
- 更改调用函数时选择框的选项值
- 通过类选择器单独调用方法
- 用于确定 AJAX 调用的引导选项卡选择
- jQuery选择调用AJAX的元素
- 基于下拉选择调用函数
- 如何将jQuery选择对象传递到被选择调用的函数
- 自动完成选择:调用另一个函数
- 选择.调用是否真的返回 d3 中的选择