select2自动为ajax调用选择项目

时间:2016-07-11 15:09:16

标签: javascript ajax jquery-select2 jquery-select2-4

当ajax响应包含额外数据时,有没有办法让select2控件自动选择项目。

我想将我的控制器实现在JsonResult标记项中作为精确马赫,然后选择2控制自动选择那个而不打开下拉。

来自用户预先指定: 如果用户键入select2文本框字符串,该字符串与控制器上的项完全匹配。例如如果用户输入条形码和控制器方法找到条形码。 Select2控件将立即选择该项而不打开下拉列表。

如果用户输入的查询不完全匹配控制器将返回没有param exact的项目列表,select2将打开下拉列表以显示用户可能选择的项目。

1 个答案:

答案 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
  }
});