2014-03-06 12 views
0

我正在使用typeaheadjs,我想音译搜索查询-before-它被发送到服务器。音译查询字符串typeahead.js

@Edvad Zagorski给优秀的PHP数组,这样做:https://stackoverflow.com/a/6837302/377192

但我会需要的是做同样的beforeSend()方法。因此,如果用户开始喜欢

čikago 

输入的东西,将派遣

cikago 

到服务器。

我尝试了无数的小技巧:json_encode,raw,url_encode ...没有工作,因为我真的没有那些编码。

这有可能吗?我想问题是beforeSend()方法接收urlEncodedQuery,而不是真正的。

回答

0

我上GitHub提出的基于标记生成器的解决方案:

var charMap = {'àáâããäå': 'a', 'èéêë': 'e', 'ç': 'c', 'ß': 'ss', /* ... */}; 

var normalize = function(str) { 
    $.each(charMap, function(chars, normalized) { 
    var regex = new RegExp('[' + chars + ']', 'gi'); 
    str = str.replace(regex, normalized); 
    }); 

    return normalized; 
} 

var queryTokenizer = function(q) { 
    var normalized = normalize(q); 
    return Bloodhound.tokenizers.whitespace(normalized); 
}; 

var engine = new Bloodhound({ 
    // ... 
    queryTokenizer: queryTokenizer 
});