如何强制我的搜索输入字段忽略非拉丁字符?

我正在尝试使用jquery为我的网站构建搜索filterfunction。 它与拉丁字符的效果非常好,但是当我尝试搜索非拉丁字符时,例如瑞典语单词,它不起作用。

这是我使用的代码:

$('#box').keyup(function() { var valThis = $(this).val().toLowerCase(); if (valThis == "") { $('.navList > li').show(); } else { $('.navList > li').each(function() { var text = $(this).text().toLowerCase(); (text.indexOf(valThis) >= 0) ? $(this).show(): $(this).hide(); }); }; }); 
    

请注意,列表中的第2个单词是瑞典语单词。 我想要做的是使搜索function忽略瑞典字母“ä”,并用拉丁字母“a”对待它们。

而且为了使它更清楚,我只想强制搜索function将字母“ä”和“a”视为相同。 所以当你开始输入…“ma”或“mä”来显示单词“människa”

我在JSFIDDLE中有一个实例

如果您知道等效字母,则可以为要替换的每个字母创建一个地图。 我已经更新了小提琴请检查。

 var langMap = { 'a': 'ä' } $('#box').keyup(function() { var valThis = $(this).val().toLowerCase(); var filteredWord = valThis.split('').map(function(letter) { if (langMap[letter]) { return langMap[letter]; } return letter; }).join(''); if (filteredWord == "") { $('.navList > li').show(); } else { $('.navList > li').each(function() { var text = $(this).text().toLowerCase(); (text.indexOf(filteredWord) >= 0) ? $(this).show(): $(this).hide(); }); }; }); 
 $('#box').keyup(function() { var valThis = $(this).val().toLowerCase(); $('#box').val(valThis.replace(/[\u0250-\ue007]/g, '')); //non-latin letter will be removed. if (valThis == "") { $('.navList > li').show(); } else { $('.navList > li').each(function() { var text = $(this).text().toLowerCase(); (text.indexOf(valThis) >= 0) ? $(this).show(): $(this).hide(); }); }; });