Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957

    [JS] timer per funzione

    Ciao a tutti,
    ho un elenco e tramite ajax applico un filtro all'elenco durante la digitazione in un campo di testo.
    Quindi durante la digitazione man mano che inserisco le lettere mi filtra l'elenco.
    Questo avviene con un onkeyup="funzione()" sul campo di testo.

    Vorrei sapere se è possibile fare una funziona che imposti un timeout. Cioè, se entro qualche decimo di secondo schiaccio un altro pulsante allora aspetta a mandare la richiesta AJAX, altrimenti la invia. Così se digito velocemente una parola mi manda una sola richiesta e non tante quante sono le lettere digitate. Grazie!

  2. #2
    Per quanto ne so, l'evento viene innescato non appena rilasci il tasto. Quindi, per "ritardarlo", credo che l'unica cosa da fare sarebbe chiamare la funzione che fa la chiamata ajax con un setTimeOut, più o meno cisì:

    // Dichiara un variabile globale
    var x = null;

    // Questo è il tuo evento
    elemento.onkeyup=funzione;

    function funzione() {
    // Annulla un eventuale timeout impostato in precedenza
    if (x) {
    clearTimeOut(x);
    }
    // Imposta il nuovo timeout per invocare la funzione che fa la chiamata ajax
    x = window.setTimeOut("callAjax()", 2000);
    }

    Quando si rilascia il tasto:
    - cancella il precedente timeout (generato da una eventuale precedente digitazione);
    - imposta il nuovo timeout - se nessun tasto viene premuto nell'intervallo di tempo (nell'esempio 2 secondi, cambialo a piacere) viene chiamata la funzione che fa la chiamata ajax.
    Dovrebbe funzionare...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    sembra andar bene :-D 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.