2016-10-13 81 views
0

我使用Select2作为自动建议。这意味着,我通过ajax从远程源获取选项。这工作完美。jQuery Select2与远程数据加载:显示选项,而不是占位符

现在,客户希望在开始键入之前加载所有选项。这种做法违背了汽车建议的目的,但如果他想这样做,他应该拥有它。

无论如何,我需要在用户开始输入之前显示前50或100个元素,而在第三个输入字符后,Select2输入应该再次获取选项。

我试着用选项值(例如“aa”,“bb”和“cc”)预填充select,但它只显示占位符。只要用户点击选择,是否可以发送请求?这也是一种可能性,因为远程来源可以发回前50个结果。如果任何人都可以引导我在正确的方向,我将感谢:)

+0

我从来没有用过,但选择二我刚刚阅读文档,我会试试这个:1 - 定义选择作为阵列的前50或100元素。 [见这里](https://select2.github.io/examples.html#data-array)2 - 使用minimumInputLength的远程选项重新定义onkeydow/up事件的选择:3.希望它有帮助。 –

+0

感谢评论@Elmer Dantas,这实际上可以在某种程度上起作用。看起来使用另一个自动完成脚本的麻烦并不多:) – itd

回答

0

一个快速的解决方法,如果任何人都会有相同的问题:

  1. 设置“minimumInputLength” 0这样的请求将在用户打开Select2输入元素后立即发送。搜索参数当然是一个空字符串。

  2. 在“processResults”函数中添加一个允许分页的逻辑。返回的对象需要一个名为“loadMore”的布尔成员的“pagination”属性。你可以在这里阅读更多关于这个:https://stackoverflow.com/a/29022107/430997 这样你才启用无限滚动。当然,您也需要支持服务器端的分页结果。

  3. (可选)您可以从不同位置获取源代码。 ajax选项的“url”参数可以是一个函数。如果要根据字符数调用不同的端点(主要是检查字符数是否为0),则可以在url函数内检查它并返回适当的端点。

这只是一种解决方法,只能模拟初始值。如果任何人有一个真正回答我的问题,请发表吧:)