我正在使用这个:
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: " "
});
有人知道解决方法吗?
当我输入一个随机字符串时,我知道它不在列表中,例如。 *&@FGBHFHBOFUBF*UB#
它会再次显示整个列表:(
后端:
if($_GET['get_suggestions']):
$terms = get_all_terms();
foreach ($terms as $term) echo $term['title']."\n";
die();
endif;
答案 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
参数匹配,然后再将其返回到自动完成脚本。
如果我能得到进一步的帮助,请告诉我!