Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript select2自动为ajax调用选择项_Javascript_Ajax_Jquery Select2_Jquery Select2 4 - Fatal编程技术网

Javascript select2自动为ajax调用选择项

Javascript select2自动为ajax调用选择项,javascript,ajax,jquery-select2,jquery-select2-4,Javascript,Ajax,Jquery Select2,Jquery Select2 4,当ajax响应包含额外数据时,是否有方法使select2控件自动选择项目 我想实现我的控制器,在JsonResult中将项目标记为精确马赫数,然后选择2控制自动选择,而不打开下拉列表 从用户指定: 如果用户键入与控制器上的项目完全匹配的select2文本框字符串。e、 g.如果用户输入条形码和控制器方法,则找到该条形码。 Select2控件将立即选择该项目,而不打开下拉列表 如果用户在查询中键入不完全匹配的内容,controller将返回不带param exact的项目列表,select2将打开

当ajax响应包含额外数据时,是否有方法使select2控件自动选择项目

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

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


如果用户在查询中键入不完全匹配的内容,controller将返回不带param exact的项目列表,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
  }
});

要使用AJAX实现这一点,您需要向selectDOM元素添加一个selected选项,然后在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定义中起作用吗?我会将其作为条形码元素更改处理程序的一部分运行,这样当条形码被扫描时,产品就会更新。我更新了答案,以包括一个示例select2定义,该定义将使后端能够在ajax请求中获取条形码。Thnx关于尝试帮助。但我想你不明白我在找什么。一个想法是选择2在2路1上工作:当用户输入时,项目控制器的一部分将返回itenms selec2,同时打开下拉列表。第二:当用户输入项目的excatk值时。控制器将只返回一个带有额外数据的项目,例如selected,然后Select2将不会打开dop'n'down,它将自动获取selected值。保存用户2单击确定,我想我现在更了解您的问题了。。。我更新了我的答案。。。您可能希望使用minimumInputLength选项来抑制下拉列表提前显示。这是否在ajax qery的select2定义中起作用?我会将其作为条形码元素更改处理程序的一部分运行,因此当扫描条形码时,产品将会更新。我更新了我的答案,添加了一个示例select2定义,该定义将使后端能够在ajax请求中获取条形码。Thnx帮助。但我想你不明白我在找什么。一个想法是选择2在2路1上工作:当用户输入时,项目控制器的一部分将返回itenms selec2,同时打开下拉列表。第二:当用户输入项目的excatk值时。控制器将只返回一个带有额外数据的项目,例如selected,然后Select2将不会打开dop'n'down,它将自动获取selected值。保存用户2单击确定,我想我现在更了解您的问题了。。。我更新了我的答案。。。您可能希望使用minimumInputLength选项来抑制下拉列表提前显示。