Come posso interrompere e avviare setInterval
?Come interrompere "setInterval"
Supponiamo di avere un textarea
. Voglio interrompere setInterval
sullo stato attivo e riavviare setInterval
in sfocatura (con jQuery).
Come posso interrompere e avviare setInterval
?Come interrompere "setInterval"
Supponiamo di avere un textarea
. Voglio interrompere setInterval
sullo stato attivo e riavviare setInterval
in sfocatura (con jQuery).
è necessario memorizzare l'id temporizzatore dell'intervallo quando si avvia, si utilizzerà questo valore in seguito per fermarlo, usando la funzione clearInterval
:
$(function() {
var timerId = 0;
$('textarea').focus(function() {
timerId = setInterval(function() {
// interval function body
}, 1000);
});
$('textarea').blur(function() {
clearInterval(timerId);
});
});
Suggerirei di aggiungere un 'if (timerId) clearInteral (timerId)' prima di 'timerId = setInterval' - altrimenti, non è garantito che l'intervallo venga cancellato se lo stato attivo viene chiamato più spesso della sfocatura. durante il test ho visto questa situazione alcune volte (su IE10). –
@PatrickKlug your right! Avevo bisogno di 'if (timerId) clearInteral (timerId)' anche – bobbyrne01
Conservare il ritorno di setInterval
in un variabile, e usarlo in seguito per cancellare l'intervallo.
var timer = null;
$("textarea").blur(function(){
timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
if(timer){
window.clearInterval(timer);
timer = null
}
});
setInterval restituisce un id che è possibile utilizzare per annullare l'intervallo con clearInterval()
ma come posso implementarlo con $ .live o $ .listen – testkhan
'$ .live' attualmente non supporta gli eventi' focus' e 'blur'. –
Questo si basa sulla risposta di CMS. La domanda posta per il timer per essere riavviato sulla sfocatura e si fermò sulla messa a fuoco, quindi ho spostato un po 'intorno:
$(function() {
var timerId = 0;
$('textarea').focus(function() {
clearInterval(timerId);
});
$('textarea').blur(function() {
timerId = setInterval(function() {
//some code here
}, 1000);
});
});
Hai un esempio in: [inserire descrizione collegamento qui] [1] [1]: http://stackoverflow.com/questions/7483525/pausing-setinterval-when-page-browser-is-out-of-focus –
Ci vuole un solo clic del mouse per accettare una risposta. Aiuta anche gli altri a vedere una risposta corretta tra molte risposte. CLIC – Onimusha