2

我正在使用 select2 选择框来填充和显示一些服务器数据。其中大部分工作正常,因为我能够获得结果并填充组合框。但是当我在搜索框中键入时,选择不会缩小最接近的匹配项。

在此处输入图像描述 我发现问题是因为后端 URL 不支持根据提供的字符串进行搜索,而 select2 根据用户输入的文本不断向后端发出多个搜索请求。遗留后端代码一次性返回结果,该结果第一次填充到组合框中。

我的问题是,如何让选择框专注于最接近的匹配结果,而无需进行多次 Ajax 调用。我希望搜索发生在已经获取的结果中。

感谢任何帮助我解决此问题的人。

我的 ajax 调用如下所示,如果这有帮助...

select2: {      
  placeholder: 'Select Next Plan Id',
  allowClear: true,
  id: function (item) {
    return item.id;
  },
ajax: {
  type: 'GET',
  dataType: "jsonp",
  url: "http://172.16.7.248:8480/app/gui?action=1&type=11",
  data: function (term, page) {
    return { search: term };
  },
  results: function (data, page) {
    return { results: data.aaData };
  },
  success : function(data, status, xhr) {
    var html = "<option value=''>None</option>";
    $.each(data.aaData, function(i, item) {
        html += "<option data=" + JSON.stringify(item.id) + " value=" + item.id + "'>" + item.id + "</option>";                 
    });
        $('#nextplanid').html(html);

        self.prop('data-loaded', 'true');
    },
    error : function(data, status, xhr) {
    }
},

formatResult: function (item) {
  return item.id;
},
formatSelection: function (item) {
  return item.id;
},
initSelection: function (element, callback) {
    return $.get('/getText', { query: element.val() }, function (data) {
    callback(data);
  });
}       

},

4

0 回答 0