在jquery中使用变音符号(色调标记)自动完成

时间:2013-04-10 10:38:15

标签: jquery jquery-autocomplete

我正在尝试使用jquery-autocomplete我的母语(越南语FWIW)中的音调标记。它对于一个单词的精确匹配很有意思。但是,我希望搜索功能忽略音调标记,即“Lâm”和“Lam”的搜索默认匹配“Lâm”。

谢谢。

1 个答案:

答案 0 :(得分:3)

我假设您在客户端数据上使用自动完成功能。

  • 要使用javascript代码替换拉丁字母表中的变音符号,请参阅this answer
  • 在小部件方面,查看source option

以下是一个概述(未经测试),让您了解如何使用source函数:

// use the 'removeDiacritics' function from the quoted answer above
function removeDiacritics(str) {
   ...
}

var myData = ['aäa', 'bbb'];

$('input#autocomplete').autocomplete({
    source: function(request, responseCallback){
        // 'request' holds the value typed in the input,
        // remove diacritics from this value, and build a regexp :
        var reSearch  = new RegExp( removeDiacritics(request) );

        // build an array of matched values :
        var result = [];
        for (var i=0; i<myData.length; i++){
            // for each search candidate, run it through removeDiacritics,
            // and see if result macthes the (diacritics free) regexp :
            if ( reSearch.match( removeDiacritics(myData[i]) ) ){
                result.push(myData[i]);
            }
        }

        // call the callback with this array :
        responseCallback(result);
    }
});