Comment puis-je arrêter et démarrer setInterval
?
Supposons que j'ai un textarea
. Je veux arrêter setInterval
sur le focus et redémarrer setInterval
sur le flou (avec jQuery).
Vous devez enregistrer l'id du timer lorsque vous le démarrez. Vous utiliserez cette valeur ultérieurement pour l'arrêter, à l'aide de la touche clearInterval
fonction:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
timerId = setInterval(function () {
// interval function body
}, 1000);
});
$('textarea').blur(function () {
clearInterval(timerId);
});
});
Ceci est basé sur la réponse de CMS. La question demandait que le minuteur soit redémarré sur le flou et arrêté sur le focus, je l'ai donc déplacé un peu:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
clearInterval(timerId);
});
$('textarea').blur(function () {
timerId = setInterval(function () {
//some code here
}, 1000);
});
});
Stockez le retour de setInterval
dans une variable et utilisez-le plus tard pour effacer l'intervalle.
var timer = null;
$("textarea").blur(function(){
timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
if(timer){
window.clearInterval(timer);
timer = null
}
});
setInterval renvoie un identifiant que vous pouvez utiliser pour annuler l'intervalle avec clearInterval ()