我正在使用http://autocompletejs.com/而我的客户正在询问是否可以排除某些字词,或者他们说是否已将这些字词视为中立",并且不会触发显示自动完成框
换句话说,让我们说下面的项目在我的列表中:
他们希望结果以Tree / Plant显示为第一个单词,但键入Tree或Plant不应触发列表。用户必须键入" Tree R"在任何结果出现之前。或者他们可以键入" R"在第二个单词中查看包含R的结果。
我无法设置minLength因为他们也希望用户能够输入" Re"查看红色/真实结果。
另一种解决方法是忽略我列表中所有项目的第一个单词。
有什么想法吗?
答案 0 :(得分:0)
看起来您可以设置preProcess选项: http://autocompletejs.com/examples#2003
或者更正确的选项可能是matchOptions选项: http://autocompletejs.com/examples#4041
在后者的情况下,想法是弄清楚用户的搜索词中有多少空格,然后仅返回具有相同空格量的结果。
注意:您还需要修剪用户的输入,以确保不会出现错误的结果。我假设您使用的是jQuery,因为.trim没有完全的浏览器兼容性,但可以在评论下方的行中实现自己的trim方法。
var matchOptions = function(input, matchedOptions, allOptions, value) {
// NOTE: be sure to trim the input first.
var term = $.trim(input)
spacesInSearchTerm = term.split(" ").length,
validOptions = [];
for (var i = 0, l = matchedOptions.length; i < l; i ++) {
if (matchedOptions[i].split(" ").length === spacesInSearchTerm)
validList.push(list[l]);
}
return validOptions;
};