0

我希望能够根据在查询中键入的文本执行“条件自动完成”。例如:

用户可以:

键入“f”,然后为所有字段名称“field_name”、“field_age”提取建议名称作为建议。

如果用户随后键入或选择“field_name”,然后在框中键入“=”,则将请求对“field_name”唯一的特定数据列表,例如[Albert,Bob,Clarisse]。

如果用户随后键入“”(空格),则选项将被远程拉入或访问[“AND”、“OR”、“==”、“!=”。一旦用户选择或键入“==”,然后基于当前字符串“field_name == ' '”,将使用列表 [Albert, Bob, Clarisse]。

如果用户改为键入 field_age...,那么会专门针对年龄 [7,3,6] 的列表或 json 对象发出请求,然后弹出该对象。搜索框中的示例输入为:

field_name = 'Albert' AND field_age = '7'

我见过一个库 typeahead.js,但它似乎只是拉入所有要自动完成的数据,而不是“按需数据”(在这种情况下,名称和年龄。原因是名称可能很大,有很多名字,我不想让客户端下载每个可用字段的所有值,因为这将是一个相当大的下载)。

做这个的最好方式是什么?typeahead.js 是支持这个还是更好的替代库?

4

2 回答 2

0

我的建议是使用两个盒子,这对我来说似乎是最合乎逻辑的方法。第一个按名称缩小范围,第二个按年龄或其他领域缩小范围。这样您就可以执行 AND/OR SQL 语句。当然,您也可以限制从服务器发回的响应数量,因为您是正确的,发回一千多个自动完成几乎没有用。至于哪个库,那时您应该能够使用您希望使用的任何自动完成库,可能有几十个。jquery UI、dojo 或者我最喜欢的 Select2。

当然,您也可以编写自己的方法来使用单个文本框而不是两个。在这种情况下,我建议在服务器端而不是客户端进行。我不知道有任何库可以在客户端或服务器端自动执行此操作。

于 2013-07-17T00:48:47.017 回答
0

dijit/form/ComboBox不提供您在此处寻找的内容吗?

此处发布了很多与您的问题类似的答案- 浏览它们...

于 2013-07-17T06:26:01.943 回答