J'ai ajouté une barre de recherche auto-complétante à mon site Web. Il interroge la base de données pour les éléments qui commencent par la chaîne entrée chaque fois que l'utilisateur tape un nouveau caractère.L'événement jQuery keyup est activé plusieurs fois, en doublant chaque fois qu'il est déclenché
Cela fonctionne bien, mais chaque fois que l'utilisateur ajoute un autre caractère ou fait un événement de clavier comme retour arrière, il double l'activation de l'événement. 1,2,4,8,16, etc. fois.
Comment est-ce que je pourrais faire en sorte qu'il n'accumule pas les déclenchements d'événement et déclenche seulement des déclenchements .keyup() une fois par événement de clavier?
Voici le code HTML:
<form>
<div class="nav-item">
<input class="search-query form-control" placeholder="Items"
type="text" name="items" value="" id="id1" />
</div>
</form>
<hr>
<div id="id2">
</div>
Et voici le code jQuery:
$(document).ready(function() {
$('#id1').keyup(function(){
var query = $(this).val();
$.get('/url/', {items: query}, function(data){
$('#id2').html(data);
});
});
});
Il y a un manque '});' dans votre extrait . Mis à part cela, ça a l'air ok, pouvez-vous partager votre code de données? – MarioZ
Vous pourriez vous pencher sur une fonction de limitation ou de débouncing ... mais je ne sais pas si cela résoudrait votre problème sous-jacent. – theGleep