Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [jQuery] Attiva e disattiva setInterval

    Buon pomeriggio.
    Ho una pagina con dei dati tabellari, e una input di ricerca.
    Lo stile è bootstrap, dove appena digiti una lettera o un numero inizia la ricerca.
    Questa pagina ha la particolarità di aggiornare il tbody della tabella, per avere sempre i dati aggiornati all'istante.
    Purtroppo mi sono accorto che, con il refresh di 1 secondo, la ricerca non funziona, cioè funziona, mi fa vedere per un secondo il risultato, ma poi ritornano tutti i dati.
    Quindi per risolvere avevo pensato di intervenire sul focus della input di ricerca.
    cosi:
    codice:
    var timer;
    function myTimer(timer,id) {
    		setInterval(function() {
    			$("tbody").load(location.href+" tbody>*","");
    		}, timer);
    		document.getElementById("demo").innerHTML = timer;
    }
    $(document).ready(function() {
    $("input[type='search']").focusout(function() {
    		clearInterval(timer);
    		timer= 1000;
    		myTimer(timer,1);
    	});
    	$("input[type='search']").focusin(function() {
    		//alert("in");
    		clearInterval(timer);
    		timer= 200000;
    		myTimer(timer,2);
    	});
    });
    
    purtroppo non capisco come mai:
    1) appena visualizzo la pagina, vado sulla ricerca, la ricerca funziona attribuendo alla variabile timer=200000
    2) se invece accedo, scorro la pagina e poi eseguo la ricerca, attribuisce a timer=200000 ma, la pagina continua ad aggiornarsi ogni secondo.

    Potete aiutarmi a stoppare e riavviare in modo corretto quel timer?
    Grazie mille.

  2. #2
    ho risolto in questo modo:
    codice:
    $(document).ready(function() {
        $('#datatable').dataTable({
            "paginate": true,
            "sort": false
        });
        // start and stop refresh tbody, sulla ricerca
        $("input[type='search']").focusout(function() {
            startCycle();
        });
        $("input[type='search']").focusin(function() {
            stopCycle();
        });
    });
    
    function myTimer() {
        $("tbody").load(location.href+" tbody>*","");
    }
    var cycleTimer;
    function startCycle() {
       clearInterval(cycleTimer);
       cycleTimer = setInterval(function(){ myTimer() }, 1000);
    }
    
    // start to automatically cycle slides
    startCycle();
    function stopCycle() {
       clearInterval(cycleTimer);
       setTimeout(startCycle, 500000); // restart after 5 seconds
    }
    
    Spero possa servire a qualcuno.
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.