IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

relancer une fonction en cours d'execution


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    45
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 45
    Par d�faut relancer une fonction en cours d'execution
    Bonjour,

    Sur un tableau j'applique un filtre. la valeur du filtre est d�termin�e par un champ input et se lance par onkeyup. A chaque fois que l'utilisateur rajoute une lettre dans l'input le tableau est refiltr�.


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         function filtre(valeur,colonne)
    {  
            for (i=0;i<nb_lots;i++)
        {
        if (!$("#matable tbody>tr:eq("+i+")>td:eq("+colonne+")").text().toLowerCase().match(valeur.toLowerCase())) 
              {$("#matable tbody>tr:eq("+i+")").hide();}
         else {$("#matable tbody>tr:eq("+i+")").show();}
            }
    cette fonction est activ�e par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    <input type="text"class="inputbleu" size="6" name="xxx" onkeyup=javascript:filtre(this.value,22)>

    mon pb est que si l'utilisateur rentre plusieurs lettres � la suite la fonction filtre est en train de tourner et comme le tableau est un peu long il faut attendre que le filtre soit termin� pour que la lettre suivante soit accept�e et que le filtre se remette en route.

    je voudrais donc en cas de 2 frappes de touche rapproch�es interompre ma fonction et la relancer imm�diatement.

    merci de vos id�es.

  2. #2
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    NON !
    la fonction ne tourne pas d�j� quant elle est relanc�e.

    sur tous les syst�mes graphique (et le HTML n'y d�roge pas) les �v�nements sont mis en file d'attente.

    la m�thode qui traite un �v�nement doit �tre termin�e pour que l'�v�nement suivant dans la file soit pris en charge. et il n'y a qu'une seule est unique file pour tout le syst�me.

    Pour couper court au protestations sur le parall�lisme
    La m�thode lanc� par le gestionnaire d'�v�nement peut lancer une ex�cution en // (thread par exemple)
    le process ainsi lanc� peut continuer ind�pendamment de la m�thode elle-m�me mais l'�v�nement suivant sera trait� par le gestionnaire que lorsque elle retournera sa valeur.

    dans HTML/JS pas de thread le traitement doit donc �tre termin� pour que l'�v�nement suivant soit pris en charge.

    dans ton cas ce ne sera m�me pas le keyUp suivant car avant �a le gestionnaire va traiter au moins le keyDown

    il n'y a donc aucune tempo � mettre en oeuvre. la fonction doit se terminer pour que le syst�me traite la touche suivante.

    A+JYT

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    45
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 45
    Par d�faut
    ok merci je m'en doutais un peu.

    On doit pouvoir quand m�me mettre une petite tempo avant le lancement de la fonction et ca devrait regler le pb.

  4. #4
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    r�ponse : non

    mais tu peut t'y prendre diff�remment
    tu fait une fonction filter
    tu d�finit une variable indiquant si une demande de filtre est active que tu position � false ua d�part

    sur l'ajout d'une touche si la variable est � false tu lance un timer et pas ta variable � true sinon tu rends la main

    lorsque le timer arrive � expiration tu mets la variable � false appelle ta fonction filter

    ainsi tu filtreras toutes les touches entr�es durant le temps du timer.
    si une touche est enfonc�e durant le filtre il faut attendre la fin du filtre


    l�inconv�nient est que si tu fais �a lorsque on appuis sur une seule touche il te faut attendre le temps du timer plus le temps du filtre.

    avant d'envisager un truc pareil je r�v�rais mas fonction filtre.
    par exemple tu r�cup�re � l'avance toutes les valeurs dans un tableau
    ainsi le filtre n'a pas � refaire une requ�te dans le DOM � chaque appel du filtre de m�me tu peux � l'avance garder un r�f�rence sur chaque objet du DOM correspondant au tr que tu veux afficher ou masquer

    ainsi ton filtre n'a plus qu'a v�rifier la pr�sence d'une valeur dans un tableau (ce qui beaucoup plus rapide que de parcourir le DOM)
    puis � afficher ou masquer une r�f�rence sans avoir � la chercher.

    JQuery et tr�s trompeur sur sa syntaxe
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $('#matable tbody>tr:eq('+i+')'
    est un appel de fonction qui sera ex�cut� � chaque passage de la boucle et � chaque appel du filtre.

    ce n'est pas un r�f�rence � un objet ou une liste d'objet
    A+JYT

    Forme toi avec les Cours et tutoriels pour apprendre JavaScript

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. passer des data a une fonction en cours d'execution
    Par benooo dans le forum Interfaces Graphiques
    R�ponses: 2
    Dernier message: 18/06/2011, 11h17
  2. R�ponses: 1
    Dernier message: 19/01/2010, 14h48
  3. Stopper une fonction en cours d'execution
    Par eponyme dans le forum C
    R�ponses: 14
    Dernier message: 10/01/2008, 09h43
  4. R�ponses: 4
    Dernier message: 07/11/2006, 11h28
  5. Compacter une appli en cours d'execution.
    Par valentin4949 dans le forum Access
    R�ponses: 4
    Dernier message: 26/11/2004, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo