用于typeahead.js的音译查询字符串

时间:2014-03-06 13:45:34

标签: javascript twig typeahead.js

我正在使用typeaheadjs,我希望音译搜索查询 - 之前 - 它被发送到服务器。

@Edvad Zagorski为此做了优秀的php数组:https://stackoverflow.com/a/6837302/377192

但我需要的是在beforeSend()方法中做同样的事情。因此,如果用户开始输入类似

的内容
čikago

会发送

cikago

到服务器。

我尝试了无数的树枝技巧:json_encode,raw,url_encode ......没有用,因为我没有真正得到那些编码。

甚至可能吗?我想问题是beforeSend()方法收到urlEncodedQuery,而不是真正的。

2 个答案:

答案 0 :(得分:0)

我有同样的问题。获取最新版本的Typeahead(本文发布时为0.10.1)。此版本集成了Bloodhound的使用,允许在提交之前对查询使用.replace()。

以下是Bloodhound文档: https://github.com/twitter/typeahead.js/blob/master/doc/bloodhound.md#remote

答案 1 :(得分: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
});