即使使用远程数据源,如何使用 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()
根据搜索词过滤列表。
我可以从数据源填充下拉列表,但顶部的搜索字段不会过滤结果。如果我向 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()
根据搜索词过滤列表。