Я пытаюсь объединить команду materializecss autocomplete plugin с моим вызовом ajax, чтобы динамически загружать данные в соответствии с тем, что вводится в поле ввода.Как использовать материализовать плагин autocomplete с ajax?
Мой запрос ajax вызывается внутри события keydown. Все полученные данные автоматически вставляются в массив объектов/значений.
Затем я помещаю функцию автозаполнения в функцию успеха ajax, а значение ключа «data» - это массив объектов, построенный ранее.
Кажется, что я нахожусь на хорошем пути, но когда я тестирую в браузере, каждый раз, когда я что-то печатаю, раскрывающийся список предложений отображается как ожидалось с результатами, но вместо того, чтобы обновляться после каждого нажатия клавиши, предыдущий и так один ...
Итак, это моя проблема: как это сделать, чтобы избежать появления списка вариантов выпадающего списка, а вместо того, чтобы обновлять его каждый раз, когда я нажимаю клавишу?
Благодарим за помощь.
var dat = {};
\t $('input').on('keydown',function(e){
\t \t var d = {
"query": {
"prefix": {
"body": e.target.value
}
}
};
\t
\t \t $.ajax({
url:'https://xxxxxxxxxxxxxxx.eu-west-1.es.amazonaws.com/xxxxxxxxxxxxx',
type:'POST',
contentType : "application/json",
crossDomain : true,
data:JSON.stringify(d),
dataType:'JSON',
async:true,
success: function(da){
\t \t \t
\t \t \t var c = da.hits.hits.length;
\t \t \t for(var i = 0; i < c; i++){
\t \t \t \t dat[da.hits.hits[i]._source.body] = null;
\t \t \t }
\t \t \t
\t \t $("input").autocomplete({
\t data : dat
\t
\t \t
},
error: function(jqXHR, errorStatus, errorThrown){
console.log(jqXHR);
console.log(errorStatus);
console.log(errorThrown);
}
})
\t \t
У вас есть все в невыгодном положении. Вы можете видеть свой код, и мы не можем. – BobRodes
@BobRodes Извините, я подумал, что в этом случае было бы более точным объяснить. Теперь вы можете проверить код –