如何基于数据源有条件地自动完成javascript中的文本字段?

如何基于数据源有条件地自动完成javascript中的文本字段?,javascript,autocomplete,Javascript,Autocomplete,我希望能够根据查询中键入的文本执行“条件自动完成”。例如: 用户可以: 键入“f”,然后将所有字段名的建议名称“field\u name”、“field\u age”作为建议 如果用户随后键入或选择“字段名称”,然后在框中键入“=”,则会有对“字段名称”独有的特定数据列表的请求,例如[Albert,Bob,Clarisse] 如果用户然后键入“”(空格),则选项将被远程拉入或访问[“和”,“或”,“或”,“==”,“!=”。一旦用户选择或键入“=”,则根据目前为止的字符串“field_name=

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

用户可以:

键入“f”,然后将所有字段名的建议名称“field\u name”、“field\u age”作为建议

如果用户随后键入或选择“字段名称”,然后在框中键入“=”,则会有对“字段名称”独有的特定数据列表的请求,例如[Albert,Bob,Clarisse]

如果用户然后键入“”(空格),则选项将被远程拉入或访问[“和”,“或”,“或”,“==”,“!=”。一旦用户选择或键入“=”,则根据目前为止的字符串“field_name=”,将使用列表[Albert,Bob,Clarise]

如果用户改为键入字段_age…,则会发出一个特定的请求,请求一个年龄为[7,3,6]的列表或json对象,然后弹出。搜索框中的示例输入为:

字段名称='Albert'和字段年龄='7'

我见过一个库typeahead.js,但它似乎只是拉入了所有要自动完成的数据,而不是“按需数据”(在本例中,名称和年龄。原因是名称可能非常庞大,有许多名称,我不希望客户端下载每个可用字段的所有值,因为这将是一个相当大的下载量)


最好的方法是什么?typeahead.js支持这个库还是其他库更好?

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

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

无法提供您在此处所需的内容吗


这里有很多关于你的问题-浏览一下…

这是一个非常有趣的案例,我不确定哪个库可以做到这一点,但我肯定typeahead.js不能做到。:)对于这类事情,你有没有使用单个文本框的服务器端建议?@Setsuna是一个编程人员,哈哈,但不是说真的,我觉得你必须进行一些自定义字符串拆分,或者我敢说,RegEx。你使用的是哪种服务器端语言?