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 :

optimiser un cochage/decochage automatique


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut optimiser un cochage/decochage automatique
    Salut, je suis en train de coder une page en asp utilisant un formulaire composé de checkboxes. Je voudrais pouvoir sélectionner certain sous-checkboxes en meme temps que l'utilisateur coche un autre checkboxe. Je m'explique par un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    type de client:
         type a
                           client 1
                           client 2
                           client 3
         type b
                           client 4
                           client 5
                           client 6
         type c
                           client 7
                           client 8
                           client 9
    Quand l'utilisateur sélectionne a, les clients 1,2,3 sont sélectionnés, mais pas les autres.
    J'ai codé la fonction javascript suivante, qui marche:
    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
    function selection_type(type)
    	{
    		var taille = type.length;
    		var i = 0;
    		var valide = 0,tmp;
    		while (i < form2.length)
    			{
    				if (document.form2.elements[i].name.substring(0,taille) == type)
    					{
    						valide = 1;
    						mesbox = document.form2.elements[i];
    						mesbox.checked = !mesbox.checked;
    					}
    				else
    					{
    						tmp = "type_" + type
    						if (document.form2.elements[i].name.substring(0,4) != "TXT_")
    							{
    								if ((document.form2.elements[i].name != tmp) && (valide == 1))
    									{
    										i = form2.length - 1;
    									}
    							}
    					}
    				i = i +1;
    			}
    	}
    Mon souci est que j'ai plus de 1800 checkboxes, donc ca entraine un traitement trés long, en particulier si je prend un des derniers types (exemple si je sélectionne type c je suis obligé de tester les types a et b. Est-ce qu'il serait possible d'optimiser ca, en mettant un sytème de marquage par exemple avec un goto ou équivalent?

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    salut

    je ne comprends pas vraiment ce que tu veux faire;

    tu as un aperçu du html?

  3. #3
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    je cherche à automatiser la création d'une liste de diffusion en asp. Je dispose d'une liste de clients, ayant chacun un ou plusieurs mails. ces clients sont subdivisés en catégories (ex: client direct, fournisseur etc...). J'affiche tous les clients classés par catégories, avec une checkbox pour chaque catégorie, et je veux pouvoir sélectionner/déselectionner les clients et les mails correspondants aux types selectionnés/déselectionnés. La fonction que j'ai codée marche, mais comme ca me fait traiter plus de 1800 mails (sous formes de checkboxes) quand je parcours mon formulaire, le temps de traitement est trés long (environ 2 min pour tout sélectionner).
    Niveau html, ca donne ca grosso modo, et pour un client:
    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
    <tr bgcolor="#FFFFCC" align="center">
    	<td align="center">
    		<table width="800" border="0" cellpadding="1" cellspacing="1">
    			<tr align="left">
    				<td valign="top" width="300">
    					<input type="checkbox" name="Autre_665" value="665"><strong><b>client</b></strong>
    				</td>
    				<td align="left" width="150">
    					<strong><b>Email 1:</b></strong><br><strong><b>Email 2:</b></strong><br>
    				</td>
    				<td>
    					<input type="checkbox" name="TXT_665_email_Autre" value="mail_client"><b>mail_client</b><br>
    					<input type="checkbox" name="TXT_665_emailglobal_0Autre" value="mail_client"><b>mail_client</b><br>
    				</td>
    			</tr>
    		</table>
    	</td>
    </tr>

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    c'est encore un peu vague pour mes 2 neurones;

    tu parles de 1800 mails mais quel rapport avec le cochage décochage?
    j'imagine que tu ne veux pas tout cocher / décocher en même temps? ou alors si? ton problème serait donc comment cocher / décocher un grand nombre de cases en même temps en évitant une boucle très lourde?


    sinon, tu pourrais mettre un peu plus de html, juste pour visualiser une partie de l'arborescence du form?;

  5. #5
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par javatwister
    tu parles de 1800 mails mais quel rapport avec le cochage décochage?
    j'imagine que tu ne veux pas tout cocher / décocher en même temps? ou alors si? ton problème serait donc comment cocher / décocher un grand nombre de cases en même temps en évitant une boucle très lourde?
    C'est exactement ca. Je veux pouvoir cocher/décocher toutes les cases qui correspondent à un certain type de client et j'aimerais éviter si possible de devoir vérifier les cases correspondant à un type de client différent.

    niveau html et pour faire court, on obtient quelque chose dans ce gout la une fois executé:

    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
    <tr bgcolor="#99FF99" align="center">
    	<td>
    		Type De Clients : &nbsp;&nbsp;
    		<input type="checkbox" onclick="selection_type('fournisseur')" name="type_fournisseur" value="fournisseur">Fournisseur
    	</td>
    </tr>
    <tr bgcolor="#FFFFCC" align="center">
    	<td align="center">
    		<table width="800" border="0" cellpadding="1" cellspacing="1">
    			<tr align="left">
    				<td valign="top" width="300">
    					<input type="checkbox" name="fournisseur_id_client1" value="id_client1"><strong><b>Client 1</b></strong>
    				</td>
    				<td align="left" width="150">
    				</td>
    				<td>
    					<i>Pas d'Email valide disponible</i><br>
    				</td>
    			</tr>
    		</table>
    	</td>
    </tr>
    <tr bgcolor="#FFFFCC" align="center">
    	<td align="center">
    		<table width="800" border="0" cellpadding="1" cellspacing="1">
    			<tr align="left">
    				<td valign="top" width="300">
    					<input type="checkbox" name="fournisseur_id_client2" value="id_client2"><strong><b>client 2</b></strong>
    				</td>
    				<td align="left" width="150">
    					<strong><b>Email 1:</b></strong><br><strong><b>Email 2:</b></strong><br>
    				</td>
    				<td>
    					<input type="checkbox" name="TXT_id_client2_email_fournisseur" value="mail_client"><b>mail_client</b><br>
    					<input type="checkbox" name="TXT_id_client2_emailglobal_0fournisseur" value="mail_client"><b>mail_client</b><br>
    				</td>
    			</tr>
    		</table>
    	</td>
    </tr>
    L'id est numérique. Si aucun email valide n'est disponible, il n'y a pas de checkbox, a part celle du client.
    Je pourrais te mettre mon code asp, mais je ne suis pas sur que ca t'aiderait dans la mesure ou je fais beaucoup de tests intermediaires pour vérifier certains paramètres.

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bon, un tout ptit script, dis-moi si ça t'inspire:

    http://javatwist.imingo.net/coch.htm

    peu importe le nommage (numérique, aléatoire, nominal), mais il faut simplement que chaque checkbox de niveau "type" ou "client" ait le même name, ce qui est assez normal;

  7. #7
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    le meme nom...... Ca peut etre une solution. Je teste ca tout de suite.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ptite maj

  9. #9
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    Oui, je viens de tester, et ca a l'air de passer. J'ai toujours un temps d'attente, mais je devrai pouvoir compter préalablement les résultats et m'en sortir ainsi. Je te remercie pour ton aide

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    et nouvelle maj pour un effet de bord non géré;

    http://javatwist.imingo.net/coch.htm


    (j'ai testé avec 1900 champs)

  11. #11
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 431
    Points : 209
    Points
    209
    Par défaut
    sacrément courageux

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

Discussions similaires

  1. Cochage automatique liste de choix
    Par sleeg dans le forum ASP
    Réponses: 2
    Dernier message: 31/05/2012, 07h37
  2. Cochage automatique de CheckBox
    Par audrey1912 dans le forum ASP
    Réponses: 9
    Dernier message: 31/05/2011, 10h31
  3. [CSS] Optimisation automatique
    Par Rolf-IV dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 10/11/2009, 12h42
  4. Probleme de cochage automatique de checkbox
    Par nuFox dans le forum IHM
    Réponses: 3
    Dernier message: 17/12/2008, 13h29
  5. Optimisation automatique de boucles
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 01/08/2007, 11h36

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