jQuery - 自动完成插件

时间:2011-01-10 03:30:39

标签: javascript jquery autocomplete

我正在使用这个:

https://github.com/agarzola/jQueryAutocompletePlugin

唯一的问题是,当您在输入字段中键入第一个字符时,它将显示所有术语建议,包括不包含此字符的术语。

只有在您键入第二个字符后,它才会正常运行,显示仅包含这2个字符的标签建议。

我正在使用此配置:

$('input.autocomplete').autocomplete("localhost/boo/?get_suggestions=1", {
   width: 250,
   max: 100,
   matchContains: true,
   minChars: 1,
   selectFirst: true,
   cache: false,
   multiple: true,
   multipleSeparator: " "
 });

有人知道解决方法吗?

alt text

当我输入一个随机字符串时,我知道它不在列表中,例如。 *&@FGBHFHBOFUBF*UB#它会再次显示整个列表:(

后端:

if($_GET['get_suggestions']):
  $terms = get_all_terms();
  foreach ($terms as $term) echo $term['title']."\n";
  die();
endif;

4 个答案:

答案 0 :(得分:1)

我建议完全禁用第一个角色建议,然后从第二个或第三个角色开始。包括我自己在内的大多数人都会发现在输入“b”后立即收到垃圾邮件并感到烦恼。

答案 1 :(得分:1)

将你的minchars改为2

 minChars: 2

这将使它只能用2个字符来表示事物。

或尝试关闭多个。

multiple: false

你需要启用吗?

如果那不是你的一杯茶,请发布localhost / boo /?get_suggestions = 1的代码,我们将看看:)

答案 2 :(得分:1)

某些部分的自动填充代码错误。从您发布的图片中,当您输入a时,会显示所有条款的长列表;当您输入ac匹配a而不是ac的建议列表时。

这是什么意思?在考虑新字符之前,代码采用输入值。您可以深入了解插件代码,或使用新的插件。

答案 3 :(得分:1)

我是那个维持github回购的人。这是正在发生的事情:

如果对数据使用url,脚本会将请求发送为您在指定网址中设置的内容,并在结尾添加q=[current input value]。如果您在输入“a”时进行初始加载,则会将其发送到您的后端脚本:localhost/boo/?get_suggestions=1&q=a。因此,autocompelte.js期望此初始查询仅生成与查询匹配的项。在初始请求之后,脚本将在内部采用过滤子集,以减少服务器负载。这解释了为什么“ac”仅返回符合您条件的项目。这是自动完成脚本,负责过滤服务器提供的内容。

如果我正确地解释您的后端代码,它对请求中发送的q参数没有任何用处,因此您的代码将返回每个可能的术语。自动填充假设这是正确搜索的结果,并向您显示所有内容,等待输入更多字符,以便进一步过滤列表。

关键是您需要使后端脚本过滤术语列表,使其与q参数匹配,然后再将其返回到自动完成脚本。

如果我能得到进一步的帮助,请告诉我!