Я реализовал typeahead.js и Bloodhound с удаленным источником данных, и в основном это работает так, как ожидалось. Тем не менее, я установил minLength для typeahead на 2, и хотя я вижу, что запрос ajax срабатывает после 2 символов (и 3), typeahead предлагает предложения только после 4 символов или более. Чего-то не хватает в моей конфигурации (я использую typeahead.bundle.min.js).
var local_authorities = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
identify : function(datum) {
//console.log(datum);
return datum.value;
},
remote: {
url: "/addresses/autocomplete_local_authorities/%QUERY",
wildcard: '%QUERY',
filter: function (data) {
// Map the remote source JSON array to a JavaScript object array
return $.map(data.local_authorities, function (local_authority) {
return {
id: local_authority.id,
value: local_authority.name
};
});
}
}
});
$('.typeahead.local-authority').typeahead({
hint: true,
highlight: true,
minLength: 2,
}, {
limit: 8,
source: local_authorities,
displayKey: 'value',
})
.on('typeahead:selected', function (e, item) {
$('[name="local_authority_ids"').val(item.id);
});
Спасибо.