16

您好我正在使用 jQuery 并从我的一个 mySQL 表中检索“项目”。我在该表中有大约 20,000 个“项目”,它将在我的表单中用作搜索参数。所以基本上他们可以搜索包含该“项目”的“购买”。

现在我需要他们能够从下拉列表中选择“项目”,但是用 20,000 个“项目”填充下拉列表需要很长时间。我想知道是否有任何支持自动完成下拉框分页的 jQuery 插件。

这样,用户可以开始输入前几个字母并过滤列表,或者只需单击箭头并查看可能 20 个项目,最后一个是“请单击更多”。

对于处理庞大的数据集和使用所述数据集填充 HTML 选择框,我愿意接受任何其他建议。

此搜索页面上可能有多个选择框,用户可以在其中选择“项目”或“客户”或任何类似的内容,然后单击“搜索”。

4

3 回答 3

4

我不认为有你所追求的特定插件,但你应该能够很容易地自己编写一个。

基本上这个概念是这样的:

  • 使用 jQuery$.ajax从数据库中检索数据
  • 将 2 个参数从 jQuery 传递到您的数据库 SELECT 语句
    • 关键词
    • 页面索引
  • 搜索以关键字开头的所有项目(自动完成),但只返回特定数量的结果(即 20)
  • 在下拉列表中填充结果后,检查确实有超过20 个项目,并附加一个<option>名为Please click for more ...
  • 通过检查它的索引并使用下拉事件将相同的$.ajax调用绑定到它(它的索引将是 20,因为它是列表中的第 21 项)并增加您发送到数据库的 pageIndex<option>onchange

如果您在分页方面需要更多帮助,PHP/mySQL请查看本教程

于 2011-02-18T00:24:15.917 回答
4

有了这么大的数据集,是时候使用 Ajax...

查看这些自动完成插件:

http://www.pengoworks.com/workshop/jquery/autocomplete.htm

http://code.google.com/p/jquery-autocomplete/

于 2011-02-18T00:27:01.153 回答
2

20000 个项目对于任何类型的下拉列表来说都太大了,除非该列表只带回项目以响应搜索,最好是其中至少包含几个字符的搜索。“点击更多”似乎很弱,不是下拉菜单的典型行为。如果用户想要的项目是列表中的 10000 个项目怎么办?

假设您的项目是简单的名称/值对(字符串名称、整数 ID 等)。

然而,JSON 可以以轻量级的方式表示 20000 个项目。您可以创建一个简单的客户端对话框(或列表),它绑定到这些项目,通过它们进行页面,并提供实时过滤。这绝对是可能的(我已经做到了),但它需要大量的自定义脚本或现有控件。

这种方法的好处是您可以在每次击键时进行实时搜索。令人惊讶的是,JavaScript 将非常容易地处理对大型数据集的简单搜索。

如果性能是关键,那么 20000 项仍然太大,即使在 JSON 中也是如此。将客户端脚本与服务器代码结合起来进行搜索、过滤、分页等,并且只向用户呈现有限的结果集。

编辑:如果您不想编写自己的数据表控件,这是使用 JSON 的网格的一种可能选项:http: //developer.yahoo.com/yui/examples/datatable/

于 2011-02-18T00:48:25.670 回答