les recours dilatoires entre keypress en jQuery
Comment puis-je retarder les actions entre les keypress en jQuery.
Par exemple;
J'ai quelque chose comme ce
if($(this).val().length > 1){
$.post("stuff.php", {nStr: "" + $(this).val() + ""}, function(data){
if(data.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}else{
$('#suggestions').hide();
}
});
}
Je veux empêcher la publication de données si l'utilisateur sans interruption de la frappe. Alors, comment puis-je donner .5 secondes de retard?
- Je suppose que c'est une fonction qui est passé dans
keypress()
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser jQuery données de capacités pour ce faire, quelque chose comme ceci:
Le principal avantage ici est pas de variables globales dans tous les sens, et vous peut encapsuler dans une fonction anonyme dans le setTimeout si tu voulais, juste essayer de faire de l'exemple aussi propre que possible.
Tout ce que vous devez faire est d'envelopper votre fonction dans un délai d'attente qui est remis lorsque l'utilisateur appuie sur une touche:
Puis suffit de l'appeler "wrapper" de votre événement clé.
Il y a une belle plugin pour gérer cela. jQuery Gaz /anti-rebond
De Nick réponse est parfait, mais si la manipulation premier événement immédiatement est critique alors je pense que nous pouvons faire:
J'avais l'envelopper dans une fonction comme ceci:
De cette façon, peu importe combien de fois vous vous de ping cela, vous n'aurez plus jamais de recherche plus de toutes les 500 millisecondes.
setTimeout(function() { needsDelay = false; }, 500);
à la place.