Почему searchbox становится запаздывающим при вводе слова для поиска данных в CSV?
Я разработал локатор магазина, используя открытую карту улиц и листовку. Проблема в том, что когда я хочу ввести слово в поле поиска, оно будет отставать, чтобы закончить слово. Этот локатор хранилища считывается из CSV-файла, содержащего данные 300++. Ниже приведен код для поля поиска:
var locationLat = []; var locationLng = []; var locMarker; var infoDiv = document.getElementById('storeinfo'); var infoDivInner = document.getElementById('infoDivInner'); var toggleSearch = document.getElementById('searchIcon'); var hasCircle = 0; var circle = []; //close store infor when x is clicked var userLocation; $("#infoClose").click(function() { $("#storeinfo").hide(); if (map.hasLayer(circle)) { map.removeLayer(circle); } }); var listings = document.getElementById('listingDiv'); var stores = L.geoJson().addTo(map); var storesData = omnivore.csv('assets/data/table_1.csv function setActive(el) { var siblings = listings.getElementsByTagName('div'); for (var i = 0; i < siblings.length; i++) { siblings[i].className = siblings[i].className .replace(/active/, '').replace(/\s\s*$/, ''); } el.className += ' active'; } function sortGeojson(a,b,prop) { return (a.properties.name.toUpperCase() < b.properties.name.toUpperCase()) ? -1 : ((a.properties.name.toUpperCase() > b.properties.name.toUpperCase()) ? 1 : 0); } storesData.on('readyunction() { var storesSorted = storesData.toGeoJSON(); //console.log(storesSorted); var sorted = (storesSorted.features).sort(sortGeojson) //console.log(sorted); storesSorted.features = sorted; //console.log(storesSorted) stores.addData(storesSorted); map.fitBounds(stores.getBounds()); toggleSearch.onclick = function() { //var s = document.getElementById('searchbox'); //if (s.style.display != 'none') { //s.style.display = 'yes'; //toggleSearch.innerHTML = ''; //$("#search-input").val(""); //search.collapse(); //document.getElementById('storeinfo').style.display = 'none'; //$('.item').show(); //} else { //toggleSearch.innerHTML = ''; //s.style.display = 'block'; //attempt to autofocus search input field when opened //$('#search-input').focus(); //} }; stores.eachLayer(function(layer) { //New jquery search $('#searchbox').on('change paste keyup', function() { var txt = $('#search-input').val(); $('.item').each(function() { if ($(this).text().toUpperCase().indexOf(txt.toUpperCase()) != -1) { $(this).show(); } else { $(this).hide(); } }); });
Есть ли способ решить эту проблему? Я искал решение, чтобы решить эту проблему, но до сих пор не могу найти решение. Спасибо
Что я уже пробовал:
Я попытался научиться использовать таблицу поиска bootstrap, но я действительно знал, как применить ее в этом локаторе магазина.