#javascript #ajax #materialize
Вопрос:
Я работал с автозаполнением materialize для своего проекта, и у меня возникли проблемы с отображением выпадающего списка. Он просто не появляется! Я читал, что материализованная версия 0.98.2 может сработать, я использовал этот CDN, и он все еще не работает. Я подозреваю, что есть какая-то проблема с запуском выпадающего списка. (Я могу быть очень неправ) еще одна вещь, которая может быть неправильной, заключается в том, что данные не используются, потому что я где-то напутал.
У меня нет проблем с получением данных и их использованием, но выпадающий список просто не работает.
HTML:
<div class="input-field">
<label for="country">Autocomplete</label>
<input type="text" id="company" class="autocomplete">
</div>
вот мой js:
var company = document.getElementById("company");
company.addEventListener("input", function () {
$(function() {
var inputValue = $('#company').val();
var url = 'https://sandbox.iexapis.com/stable/search/'
encodeURIComponent(inputValue)
'/?token=****************';
$.ajax({
type: 'GET',
url: url,
success: function(response) {
var companyArray = response;
var dataCompany = {};
for (var i = 0; i < companyArray.length; i ) {
//console.log(countryArray[i].name);
console.log(url);
dataCompany[companyArray[i].securityName] = companyArray[i].symbol;
console.log(companyArray[i].securityName);
console.log(companyArray[i].symbol);
}
$('input.autocomplete').autocomplete({
data: dataCompany
});
}
});
});
});
Поскольку кто-то запросил ответ, я помещаю здесь несколько скриншотов!
это когда я ввожу «ва»
проблема не в том, что данных там нет, просто не появляется выпадающее окно выбора.
Комментарии:
1. ПРИВЕТ, можешь показать результат
response
?2. @Swati мм, я мог бы показать вам журналы консоли, но в противном случае я мало что мог бы вам показать, так как выпадающее меню не отображается, поэтому я не могу показать, что оно не отображается, но я постараюсь сделать все возможное, чтобы добавить несколько информационных скриншотов, кроме того, на самом деле нет сообщения об ошибке, оно просто не работает.
Ответ №1:
Сначала вы можете инициализировать автозаполнение и сохранить его экземпляр в какой-либо переменной . Затем , всякий раз, когда пользователь вводит текст в поле ввода, просто используйте этот экземпляр для обновления данных внутри вашего автозаполнения, т. е.: instance.updateData(dataCompany)
.
Демонстрационный код :
//suppose this is response return from ajax
var response = [{
"securityName": "abc",
"symbol": "scsc"
}, {
"securityName": "abc2",
"symbol": "scsc2"
}]
$(function() {
$('input#company').autocomplete() //intialize your autocomplete
let instance = M.Autocomplete.getInstance($('input#company')); //get instance
$('input.autocomplete').on("input", function() {
var inputValue = $('#company').val();
/*var url = 'https://sandbox.iexapis.com/stable/search/'
encodeURIComponent(inputValue)
'/?token=****************';
$.ajax({
type: 'GET',
url: url,
success: function(response) {*/
var companyArray = response;
var dataCompany = {};
for (var i = 0; i < companyArray.length; i ) {
dataCompany[companyArray[i].securityName] = companyArray[i].symbol;
}
//updatedata
instance.updateData(dataCompany)
/* }
});*/
});
})
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<div class="input-field">
<label for="country">Autocomplete</label>
<input type="text" id="company" class="autocomplete" autocomplete="off">
</div>
Комментарии:
1. это кажется многообещающим! Я попробую это, я думаю, что это сработает! Спасибо за уделенное время!
2. это приводит к следующей ошибке: что я могу делать не так?? Неперехваченная ошибка типа: Не удается прочитать свойство «Обновленные данные» неопределенного
3. Я добавлю ссылку на код, пожалуйста, взгляните на мой код, возможно, я делаю что-то не так, у меня мало опыта работы с JS, я работаю на бэкэнде. codepen.io/VardhanMahajan/pen/poRLvYO
4. да, пожалуйста, используйте код js, который я добавил в свой ответ, и посмотрите, сработает ли это ..
5. спасибо, что это работает!!! но я получаю много ошибок imgur.com/zHpumrK