Javascript jquerytypeahead:处理非相关词
我使用这个jquery typeahead插件: 我有一个非常简单的代码:Javascript jquerytypeahead:处理非相关词,javascript,jquery,typeahead,Javascript,Jquery,Typeahead,我使用这个jquery typeahead插件: 我有一个非常简单的代码: var street=['street of north','street of south','street of east']; $.typeahead({ input: "#input", order: "asc", minLength: 1, source: {
var street=['street of north','street of south','street of east'];
$.typeahead({
input: "#input",
order: "asc",
minLength: 1,
source: {
data: street
}
});
当我输入“north”时,建议是“street of north”
但是当我键入“north street”时,我希望得到“street of north”的建议,而不仅仅是为了精确的字符串
这是一个代码笔演示:我发现了。似乎有效:
$.typeahead({
input: "#input",
order: "asc",
minLength: 1,
accent: true,searchOnFocus: true,
source: {
data: gares
},
cancelButton: false,
filter: function (item, displayKey) {
var queryArray = this.query.split(' ');
for (var i = 0, ii = queryArray.length; i < ii; ++i) {
if (displayKey.toLowerCase().includes(queryArray[i].toLowerCase())) {
}
else {return false;}
}
return true;
}
});
更新:适用于重音:
filter: function (item, displayKey) { var queryArray = this.query.split(' '); var aa=displayKey.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); for (var i = 0, ii = queryArray.length; i < ii; ++i) { var bb= queryArray[i].toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); if (!aa.includes(bb)) {return false} } return true; }
filter:function(item,displayKey){var-queryArray=this.query.split(“”);var-aa=displayKey.toLowerCase().normalize(“NFD”).replace(/[\u0300-\u036f]/g,”);for(var i=0,ii=queryArray.length;i
filter: function (item, displayKey) { var queryArray = this.query.split(' '); var aa=displayKey.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); for (var i = 0, ii = queryArray.length; i < ii; ++i) { var bb= queryArray[i].toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); if (!aa.includes(bb)) {return false} } return true; }