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 :

Exécuter une fonction avant une autre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut Exécuter une fonction avant une autre
    Bonjour;
    Je ne sais pas si j'ai bien choisi le titre pour mon problème ou non (merci de me diriger).
    voila j'ai un formulaire qui contient deux select multiple, les deux contiennent beaucoup d'éléments (des milliers ) j'ai un bouton entre les deux select pour basculer les éléments entre les deux à travers une fonction qui est une peut couteuse en temps d'exécution, mais ce n'est pas sa le problème, mon problème c'est que je veux désactiver le bouton de validation du formulaire juste avant l'exécution de la fonction qui effectue le transfert d'éléments entre les deux select et le réactiver à nouveau après que l'exécution de cette fonction soit terminer (puisque sont exécution prend de 4 à 5 sec).
    en quelque sort, lorsque je clique sur le bouton qui effectue le transfert j'exécute ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fonction_desactiver_le_bouton_validation();
    fonction_du_transfert() // fonction couteuse en temps d'éxecution
    fonction_sactiver_le_bouton_validation();
    mon problème c'est que malgré mon exécution des trois fonction dans l'ordre mais la désactivation et l'activation du bouton validation ne s'effectuent qu'après l'exécution de la fonction du transfert.
    y a quelqu'un qui a une idée comment je peux faire pour forcer l'exécution des trois fonction dans l'ordre que je veux???
    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Une méthode barbare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function fonction_du_transfert() {
     
      fonction_desactiver_le_bouton();
     
      ...code...
     
      fonction_activer_le_bouton();
    }
    Ceci devrait fonctionner en toute logique.

  3. #3
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Citation Envoyé par tusssss Voir le message
    Une méthode barbare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function fonction_du_transfert() {
     
      fonction_desactiver_le_bouton();
     
      ...code...
     
      fonction_activer_le_bouton();
    }
    Ceci devrait fonctionner en toute logique.
    Merci pour ta réponse;
    J'ai déjà essayer cette méthode mais sa ne marche pas, la desactivation et l'activation du bouton ne se fais qu'après l'exécution du script de transfert je ne comprend pas.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    alors le problème se situe ailleurs

    montre nous le contenu de tes fonctions ^^

  5. #5
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    alors le problème se situe ailleurs

    montre nous le contenu de tes fonctions ^^
    voici mes fonctions:
    1- la fonction qui désactive et active le bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function change_save_button(etat)
    {
    	if(etat == 'activate')
    	{
    		document.getElementById('submit_img').src 		= 'img/btn_enreg.gif';
    		document.getElementById('submit_img').onclick	= "return do_post('data_selected','div');";
    	}
    	else if(etat == 'desactivate')
    	{
    		document.getElementById('submit_img').src 		= 'img/btn_enreg_desac.gif';
    		document.getElementById('submit_img').onclick	= "";
    	}
    	//alert(document.getElementById('submit_img').onclick)
    	return true;
    }
    2- la fonction de transfert.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    function ajouter_trier(src , dest ) 
    {
    	//alert('yes');
    	change_save_button('desactivate');
    	ajouter(src , dest);
    	sortSelect (dest);
    	change_save_button('activate');
    }
     
    function ajouter(src , dest ) {
     
        var src =  document.getElementById(src);
    	var dest = document.getElementById(dest);
     
        for(i = (src.options.length-1);i >=0 ;i--)
        if(src.options[i].selected ){
        	dest.options[dest.options.length] = new Option(src.options[i].text,src.options[i].value);
        src.options[i] = null;
        }
     
    	return false;
    }
     
    function sortSelect(selectToSort) 
    {
     
    	var selectToSort = document.getElementById(selectToSort);
    	// copy options into an array
    	var myOptions = [];
    	for (var loop=0; loop<selectToSort.options.length; loop++) 
    	{
    		myOptions[loop] = 
    		{ 
    			optText:selectToSort.options[loop].text, 
    			optValue:selectToSort.options[loop].value 
    		};
    	}
    	// sort array
    	myOptions.sort(sortFuncAsc);
     
    	// copy sorted options from array back to select box
    	selectToSort.options.length = 0;
    	for (var loop=0; loop<myOptions.length; loop++) 
    	{
    		var optObj = document.createElement('option');
    		optObj.text = myOptions[loop].optText;
    		optObj.value = myOptions[loop].optValue;
    		selectToSort.options.add(optObj);
    	}
    }
    la fonction sortSelect c'est elle qui prend du temps et elle me bloque l'application pendant son exécution (elle fais la réorganisation des éléments du select par ordre alphabétique), mais sa ne dois pas poser de problème si je peut seulement désactiver le bouton de validation avant que la fonction s'exécute comme sa l'utilisateur ne se trompe pas et sache qu'il ne peut pas encors valider le formulaire.

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    étrange

    as tu test de faire uniquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    change_save_button('desactivate');
    et voir si ça fonctionne ?

    sinon petit truc :

    stock la valeur de selectToSort.options.length dans une variable car si tu as des milliers d'éléments comme tu nous l'indique , tu perds énormément de temps a tout recalculer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. executer une fonction avant l autre
    Par salsoul dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/07/2007, 21h35
  3. Réponses: 8
    Dernier message: 10/01/2007, 21h10
  4. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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