即使使用远程数据源,如何使用 Select2 的默认搜索?

How to use the default search with Select2 even when using a remote data source?

我可以从数据源填充下拉列表,但顶部的搜索字段不会过滤结果。如果我向 API 发送 AJAX 请求,其中 returns 数据,然后遍历结果,为每个结果创建一个 <option> 元素,并将其附加到父级<select>,然后启动 Select2 - 它工作正常。

$("#athletes").select2({
  ajax: {
    url: myUrl,
    type: "GET",
    dataType: "json",
    processResults: function(data) {
      return { results: data.results };
    }
  }
});

然而,当使用 Select2 内置 ajax 函数时,返回了结果,但搜索中断了。无论搜索什么,都会返回所有结果。似乎标准程序是向请求添加额外的查询参数,然后在服务器上过滤结果。有没有办法从源填充下拉列表,然后使用搜索功能,就好像它是预先填充的 <select>.

我最终通过添加 processResults() 函数解决了这个问题。通过抓取框中的搜索词,您可以使用 JavaScript filter() 根据搜索词过滤列表。