Я хочу обеспечить функциональность опережающего ввода с помощью bootstrap3-typeahead.js (который является поддерживаемой вилкой из typeahead.js) с удаленными данными. Однако, когда пользователь быстро вводит и нажимает клавишу ввода, чтобы отправить запрос, всплывающая подсказка все еще отображается. Я подумал, что простой способ решить эту проблему — просто отменить запрос ajax, когда пользователь нажимает клавишу ввода. Однако это не работает.
Судя по отзывам charlietfl, это происходит потому, что запрос получен до того, как пользователь нажмет какую-либо клавишу. Поэтому, возможно, мне нужен другой способ убрать всплывающую подсказку, когда пользователь нажимает клавишу ввода. Я был бы рад получить предложение о том, как это сделать.
Это демонстрация. Если вы быстро наберете, например, «Собака» и нажмете ввод, я якобы прерву запрос, но результаты все равно будут отображаться.
$(document).ready(function() {
var req;
$('.typeahead').typeahead(
{
name: 'animals',
display: 'value',
items: 'all',
delay: 500,
source: function(query, process) {
var url = "http://api.gbif.org/v1/species/match?verbose=true&kingdom=Plantae&name=" + query;
req = $.get(url, function(data) {
data = $.map(data['alternatives'], function(name) {
return {
name: name['scientificName']
};
})
process(data);
});
return req
}
})
.on('keydown', function(event) {
console.log('keydown');
if(event.which == 13) {
console.log('enter key');
if (req) {
console.log('req',req);
req.abort();
}
}
});
});
С Уважением