我希望能够根据查询中输入的文本执行“条件自动完成”。例如:
用户可以:
输入“f”,然后提取所有字段名称“field_name”,“field_age”的建议名称作为建议。
如果用户然后键入或选择“field_name”然后在框中键入“=”,则会有对“field_name”特有的特定数据列表的请求,例如[Albert,Bob,Clarisse]。 / p>
如果用户然后键入“”(空格),则可以远程拉入或访问选项[“AND”,“OR”,“==”,“!=”。一旦用户选择或键入说“==”然后根据当前字符串“field_name ==''”,将使用列表[Albert,Bob,Clarisse]。
如果用户改为输入field_age ...那么请求将特别针对年龄[7,3,6]的列表或json对象,然后弹出。搜索框中的示例输入将是:
field_name ='Albert'AND field_age ='7'
我见过一个库typeahead.js,但它似乎只是将所有数据拉入自动填充而不是“需要时的数据”(在这种情况下,名称和年龄。原因是名称可以是巨大的,有许多名称,我不希望客户端下载每个可用字段的所有值,因为它将是一个相当大的下载)。
最好的方法是什么? typeahead.js是否更好地支持这个或一些备用库?
答案 0 :(得分:0)
我的建议是使用两个盒子,对我来说似乎是最合乎逻辑的方法。第一个按名称缩小,第二个按年龄或其他字段缩小。这样,您就可以执行AND / OR SQL语句。当然,您也可以限制从服务器发回的响应数量,因为您是正确的,发回一千+自动完成是没什么用的。至于哪个库,那时你应该能够使用你想要的任何自动完成库,它们可能有几十个。 jquery UI,dojo或我最喜欢的Select2。
您当然也可以编写自己的方法来使用单个文本框而不是两个文本框。在这种情况下,我建议在服务器端而不是客户端执行此操作。我不知道任何库可以在客户端或服务器端自动执行此操作。
答案 1 :(得分:0)
dijit/form/ComboBox不能提供您在寻找的内容吗?
您的问题中有很多Similar answers张贴在这里 - 浏览它们......