我有一个文本框,我想要一个自动完成功能,让用户搜索地址。用户必须能够键入不同的单词,并且自动完成必须搜索它们以缩小其列表。
我一直在尝试阅读文档,但似乎没有什么可以做的,因为它总是搜索整个字符串而不是单词。我错过了什么吗?
示例:
当用户输入'Mathias Antwerp'时,他必须看到包含这些词的所有地址。在示例中,它必须显示1行,这是第二行。
<script>
var addresses = [
{ name: "Frederick Dereave Gentstreet 4 Gent" },
{ name: "Mathias Derian Meilaan 9 Antwerp" },
{ name: "Mathias Hors frelaan 5 Kortrijk" }
];
$(document).ready(SetAutoComplete);
function SetAutoComplete() {
$("#testveld").autocomplete(emails,
{
matchContains: "word"
}
);
}
</script>
<input type="text" id="testveld" style='width:300px'/>
答案 0 :(得分:7)
我在jquery.autocomplete.js中更改了matchSubset的代码,这启用了我正在寻找的行为。
function matchSubset(s, sub) {
var arraySub=sub.split(" ");
if (!options.matchCase)
s = s.toLowerCase();
var i = s.indexOf(sub);
if (options.matchContains == "word"){
i = s.toLowerCase().search("\\b" + sub.toLowerCase());
}
//addition for split words
if (options.matchContains == "splittedword"){
for(itemindex=0;itemindex<arraySub.length;itemindex++){
i = s.toLowerCase().search(arraySub[itemindex].toLowerCase());
if(i==-1){
break;
}
}
}
if (i == -1) return false;
return i == 0 || options.matchContains;
};
答案 1 :(得分:0)
AFAIK,您必须自己进行一些处理,将字符串解析为单词。您可以使用jquery执行此操作,或者如果您计划从服务器端获取地址,则使用某种服务器端语言。