如何对包含特殊字符的单词进行自动完成匹配,例如德语:ö,Ä,é或ß。例如,我喜欢“mun”来匹配“München”和“Munchen”。
答案 0 :(得分:4)
在A List Apart上有一篇很好的文章,其中包含一些Javascript代码
var accentMap = {
'á': 'a',
'é': 'e',
'í': 'i',
'ó': 'o',
'ú': 'u'
};
function accent_fold(s) {
if (!s) {
return '';
}
var ret = '';
for (var i = 0; i < s.length; i++) {
ret += accent_map[s.charAt(i)] || s.charAt(i);
}
return ret;
};
答案 1 :(得分:3)
我使用typeahead,并且在我的头撞墙后几个小时就像在脚本上使用utf8_encode返回JSON一样简单:
函数utf8_encode(的stripslashes($变量));
答案 2 :(得分:0)
jQuery UI在他们的网站上有一个针对此问题(重音折叠)的演示:https://jqueryui.com/autocomplete/#folding
$(function() {
var names = ["Jörn Zaefferer", "Scott González", "John Resig"];
var accentMap = {
"á": "a",
"ö": "o"
};
var normalize = function(term) {
var ret = "";
for (var i = 0; i < term.length; i++) {
ret += accentMap[term.charAt(i)] || term.charAt(i);
}
return ret;
};
$("#developer").autocomplete({
source: function(request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(names, function(value) {
value = value.label || value.value || value;
return matcher.test(value) || matcher.test(normalize(value));
}));
}
});
});