默认情况下,twitter typeahead.js仅返回在字符串开头匹配的元素,例如:
来源:['type','typeahead','ahead']
查询:'类型'
返回:'type'和'typeahead'
-
查询:'提前'
回报:'前进'
我想让它返回'前进'和'打字'
我的代码:
var clients = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
limit: 10,
prefetch: {
url: '/clients.json',
filter: function(list) {
return $.map(list, function(value) { return { name: value }; });
}
}
});
clients.initialize();
$('.client').typeahead(null, {
displayKey: 'value',
source: clients.ttAdapter(),
minLength: 1,
});
Run Code Online (Sandbox Code Playgroud)
已经有一个问题,但我不明白答案.
我试过这个解决方案但是我收到了这个错误:
未捕获的ReferenceError:未定义规范化
这是我的代码:
var charMap = {
"à": "a", "â": "a", "é": "e", "è": "e", "ê": "e", "ë": "e",
"ï": "i", "î": "i", "ô": "o", "ö": "o", "û": "u", "ù": "u"
};
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 spectacles = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), …Run Code Online (Sandbox Code Playgroud)