【问题标题】:How to display all options in Jquery auto complete even if the input does not match any of the strings即使输入与任何字符串都不匹配,如何在 Jquery 自动完成中显示所有选项
【发布时间】:2015-03-19 04:21:13
【问题描述】:

当用户开始写作时,我正在使用 jquery 自动完成来填充城市名称。这些城市来自多个国家,如果用户输入国家名称,我现在要做的是填充相关城市。

例如,如果用户输入'San',jquery 将使用['San Diego','Santiago'] 填充自动完成。现在,如果用户在美国输入,我希望自动完成填充 ['New York City', 'Boston', 'Seattle', 'San Diego', etc..]

我可以做的是创建HashMap,其中国家为键,城市列表为值。然后,只要输入与国家/地区名称匹配,我就可以适当地更改自动完成的来源。

$( "#citySearch" ).autocomplete({source: citySearchList});

现在问题是显示源中的所有选项,即使 United States 在自动完成的正常实现中不会触发 ['New York', 'Boston', etc..]

我尝试使用this answer中的技巧

【问题讨论】:

  • ajax 请求的结果是您从服务器获得的,与自动完成或 JavaScript 完全无关。换句话说,您的服务器端代码和 SQL 查询是您集中精力的地方。
  • citycounty 数据存储在哪里?
  • @JordiCastilla 我通过JSON 得到cities 并简单地使用$( "#citySearch" ).autocomplete({source: citySearchList}); 我想最好的解决方案是检查#citySearch 中的输入是否与任何country 匹配并填充相关城市。
  • 你怎么知道关系 btw city-country
  • 我将通过JSON 加载它们,并可能创建与hashmap 等效的javascript 来存储它们。

标签: jquery ajax autocomplete


【解决方案1】:

如果搜索输入包含一个国家/地区的名称,您可以获取该国家/地区的城市列表并执行以下操作:

$( "#citySearch" ).autocomplete({ source: citySearchList, minLength :0 });
$( "#citySearch" ).autocomplete("search", "");

当您的数据中输入的不是国家/地区名称时,您只需将源改回原始数据即可。

将 minLength 设置为 0,然后使用搜索方法搜索 "" 将显示自动完成源数组中的所有数据。

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多