I want to create my own auto-complete component.
Each time I make a change to the input, the suggested results don't appear unless I click somewhere else on the page.
How can I make it so that I see the suggested result while I make changes in the input?
$(document).ready(function() {
element = document.getElementById('autocomplete-position');
var top = $('#autocomplete-position').offset().top - $('#position-relative').offset().top;
var rect = element.getBoundingClientRect();
var width = element.offsetWidth;
$('.autocomplete-suggestions').css('top', top).css('left', rect.left).css('width', width);
$('#q').change(function() {
$.ajax({
url: 'http://localhost:3000/search',
data: {
term: $('#q').val()
},
success: function(data) {
$('.autocomplete-suggestions').children().remove();
data.forEach(function(element) {
$('.autocomplete-suggestions').append(' <div class="autocomplete-suggestion"><p>' + element.name + '</p></div>');
});
}
});
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="position-relative"></div>
<input type="text" name="q" id="q" autocomplete="off" />
<div id="autocomplete-position"></div>
<div class="autocomplete-suggestions" style="position: absolute; z-index: 999">
</div>