J'ai une zone de texte. Je veux appeler une fonction de rappel ajax avec un délai de 2 secondes sur chaque keyup.événement de saisie de saisie de texte avec intervalle de temps
Comment implémenter cela?
J'ai une zone de texte. Je veux appeler une fonction de rappel ajax avec un délai de 2 secondes sur chaque keyup.événement de saisie de saisie de texte avec intervalle de temps
Comment implémenter cela?
En utilisant jQuery, mais ne hésitez pas à remplacer votre propre bibliothèque JS de choix:
var currentTimer = null;
input.bind('keyup', function() {
if (!currentTimer) {
currentTimer = true;
setTimeout(function() {
if (currentTimer) {
currentTimer = null;
// Do ajax call here
}
}, 2000);
}
});
J'utilise jQuery ici, mais vous devriez obtenir le point:
function callAjax() {
timer = null;
// handle all your ajax here
}
var timer = null;
$('input').keyup(function() {
// this will prevent you from reseting the timer if another key is pressed
if (timer === null) {
timer = setTimeout(callAjax, 2000);
}
});
Si vous êtes en utilisant jQuery, vous pouvez utiliser l'excellent plugin delayedObserver.
2 secondes après la dernière pression sur la touche ou à chaque pression de la touche?
<input type="text" id="txtBox" value="" width="200px"/>
<input type="text" id="txt" width="200px"/>
<script type="text/javascript">
$(document).ready(function(){
$("#txtBox").keyup(function(){
setTimeout(function(){
$("#txt").val($("#txtBox").val());//Here call ajax code
},2000);
});
});
</script>
Salut, je pourrais faire avec ce code. Pour moi, quand je cours le code, il attendra 2 secondes indépendamment de ce qui est tapé puis exécuté. Pouvez-vous le modéliser de façon à ce qu'il réinitialise le minuteur si une autre touche est pressée? – CaRDiaK