【问题标题】:select2 automatically select item for ajax callselect2自动选择ajax调用的项目
【发布时间】:2016-11-13 14:28:56
【问题描述】:

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

我想实现我的控制器以在 JsonResult 中将项目标记为精确马赫,然后在不打开下拉菜单的情况下进行 select2 控制自动选择。

从用户的角度来看: 如果用户输入与控制器上的项目完全匹配的 select2 文本框字符串。例如如果用户输入条形码和控制器方法,则找到该条形码。 Select2 控件将立即选择该项目而不打开下拉菜单。

如果用户输入的查询不完全匹配,控制器将返回不带参数的项目列表,并且 select2 将打开下拉菜单以显示用户可能选择的项目。

【问题讨论】:

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


    【解决方案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
      }
    });
    

    【讨论】:

    • 这能在 ajax qery 的 select2 定义中工作吗?
    • 我会将它作为#barcode 元素上更改处理程序的一部分运行,因此当条形码被扫描时,产品会更新。
    • 我更新了我的答案以包含一个示例 select2 定义,该定义将使后端能够在 ajax 请求中获取条形码。
    • 感谢您的帮助。但我认为你不明白我在找什么。一个想法是 select2 在第 2 种方式上工作:当用户键入项目控制器的一部分时,将在打开 drop'n'down 时返回 items selec2 两个。 2nd:当用户输入项目的 excatk 值时。控制器将只返回一个带有额外数据的项目,例如(选中)然后 Select2 将不会打开 dop'n'down 它会自动获取选中的值。保存用户 2 点击
    • 好的,我想我现在更好地理解了您的问题...我更新了我的答案...您可能希望使用 minimumInputLength 选项来禁止下拉列表提前显示。
    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2021-06-10
    • 1970-01-01
    • 2016-02-03
    相关资源
    最近更新 更多