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 :

Groupes de checkbox


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 144
    Par défaut Groupes de checkbox
    Chers membres,

    Je dispose de plusieurs groupes de checkbox exemple : NOM - PRENOM - AGE - TAILLE - ETC. Pour chacun de ces groupes les variables sont représenter comme une série de case à cocher. Voici le code HTML qui créé ces éléments :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {foreach from=$ids key=cle2 item=attribut}<style type="text/css">#uniform-{$id_product}_{$cle2}{ display: inline;}</style>
    				 <input class="d_c_selector" id="{$id_product|escape:'html'}_{$cle2|escape:'html'}" name={$cle} type="checkbox" indeterminate onclick="d_c_selector({$id_product|escape:'html'})"/>
    				{$attribut}{$list_ids = $list_ids|cat:{$id_product}|cat:'_'|cat:{$cle2}|cat:'|'} {/foreach}
    Le code java qui intervient sur la fonction ONCLICK est le suivant :

    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
    function d_c_selector(id_product)
    	{
     
    	var list_ids = document.getElementById("list_ids_" + id_product).value;
    	var longueur = list_ids.length;
    	list_ids = list_ids.substring(0, longueur - 1);
     
    	var ids = list_ids.split('|');
     
    	for(var j=0; j<document.getElementsByClassName("combi_" + id_product).length; j++)
     
    		if(document.getElementsByClassName("combi_" + id_product)[j])
    			document.getElementsByClassName("combi_" + id_product)[j].style.display = "table-row";
     
    			for(var i=0; i<ids.length; i++)
    			{
    				if(document.getElementById(ids[i]).checked) 
    					{
    					}
    				else
    					{
    					for(var j=0; j<document.getElementsByClassName(ids[i]).length; j++)
    						if(document.getElementsByClassName(ids[i])[j])
    							document.getElementsByClassName(ids[i])[j].style.display = "none";
    					}
     
    			}
    		}
    Mon problème c'est que pour un groupe pour lequel aucune variable n'est sélectionné alors aucun résultat n'est visible car le groupe est restrictif.

    Pouvez-vous m'aider pour que lorsque pour un groupe aucune variable n'est "checked" alors le groupe ne soit pas restrictif sur les résultats affichés.

    Merci de votre aide.

  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
    Où est le HTML généré par le serveur ?
    je vois un truc qui ressemble vaguement à un mélange de html et de je ne sais quoi

    du coup on ne fait pas à quoi s'applique le javascript.

    enfin peux tu expliquer à un neuneu comme moi quel est le problème car là je n'ai rien compris.

    A+JYT

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 144
    Par défaut
    Merci pour votre réactivité. Voici le code html contenu dans le fichier TPL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="d_c_selector" id="{$id_product|escape:'html'}_{$cle2|escape:'html'}" name={$cle} type="checkbox" indeterminate onclick="d_c_selector({$id_product|escape:'html'})"/>
    la fonction d'appel est : onclick="d_c_selector({$id_product|escape:'html'}

    Je vais essayer également d'être plus clair en ce qui concerne mon explication. Mon formulaire dispose de différents groupe de checkbox propres à des caractéristiques.
    Si pour un groupe de caractéristiques de couleur (par exemple) rien n'est sélectionné et que pour un autre groupe de gabarit le critère "petit" est sélectionné, les résultats devraient être : Petit & Blanc, Petit & Noir, Petit & Rouge. Actuellement le résultat est nul. Et c'est seulement si je fais le choix d'une couleur "Rouge", alors le résultat sera Petit & Rouge.

    Voici également un lien pour la page : http://materiel-levage.com/potences-...fil-creux.html

    J'espère que celà vous aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Ce que sekaijin te demande, et ce qui est indiqué dans les règles de cette section, c'est d'avoir le code côté client, celui que tu vois en faisant clic droit / afficher la source sur ton navigateur. Si on a un mélange de code serveur et de code client, on ne parviendra pas à cerner le problème.

  5. #5
    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
    Citation Envoyé par fisio Voir le message
    ...Je vais essayer également d'être plus clair en ce qui concerne mon explication. Mon formulaire dispose de différents groupe de checkbox propres à des caractéristiques.
    Si pour un groupe de caractéristiques de couleur (par exemple) rien n'est sélectionné et que pour un autre groupe de gabarit le critère "petit" est sélectionné, les résultats devraient être : Petit & Blanc, Petit & Noir, Petit & Rouge. Actuellement le résultat est nul. Et c'est seulement si je fais le choix d'une couleur "Rouge", alors le résultat sera Petit & Rouge....
    Le résultat de quoi ?
    Où ?
    Quelle variable ?
    Comment lis tu les valeurs ?

    plus tu sera précis sur ce qui ne fonctionne pas mieux on pourra t'aider.

    pour le moment on sait qu'il y a quelque part un truc dont on ne sais rien qui est null est ne de devrait pas l'être.
    on sais aussi qu'il y a un code HTML mais on ne le connait pas. et un Javascript qui est censé s'y rattacher.

    ça fait maigre

    A+JYT

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 144
    Par défaut
    J' ai communiqué dans mon précédent mail l'adresse url du problème. Ainsi que le code HTML du fichier tpl du serveur qui lance la fonction java d_c_selector, et le code java de cette fonction.

    Merci encore pour cette aide car je ne suis pas développeur mais j'essaye de comprendre ces codes.

    Dîtes moi exactement ce que vous avez besoin pour analyser mon problème. Le code source d'un des checkbox est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="d_c_selector" id="169_196" type="checkbox" indeterminate onclick="d_c_selector(169)"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </section></div></div><h3 class="page-product-heading">Déclinaisons</h3><table class="table_d_c"><tr><td><p><p><p style="float: left;"><form name=CMU (Kg)> <span class="attribut_name">CMU (Kg)</span> :</p></p><p><p style="float: left;"><style type="text/css">#uniform-169_166{ display: inline;}</style><input class="d_c_selector" id="169_166" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 50<style type="text/css">#uniform-169_193{ display: inline;}</style><input class="d_c_selector" id="169_193" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 80<style type="text/css">#uniform-169_181{ display: inline;}</style><input class="d_c_selector" id="169_181" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 150<style type="text/css">#uniform-169_186{ display: inline;}</style><input class="d_c_selector" id="169_186" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 250<style type="text/css">#uniform-169_190{ display: inline;}</style><input class="d_c_selector" id="169_190" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 500<style type="text/css">#uniform-169_177{ display: inline;}</style><input class="d_c_selector" id="169_177" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 1000<style type="text/css">#uniform-169_182{ display: inline;}</style><input class="d_c_selector" id="169_182" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 1600<style type="text/css">#uniform-169_184{ display: inline;}</style><input class="d_c_selector" id="169_184" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 2000</p></p> <br> </br></form><p><p style="float: left;"><form name=Portée (m)> <span class="attribut_name">Portée (m)</span> :</p></p><p><p style="float: left;"><style type="text/css">#uniform-169_168{ display: inline;}</style><input class="d_c_selector" id="169_168" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 2<style type="text/css">#uniform-169_167{ display: inline;}</style><input class="d_c_selector" id="169_167" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 2.5<style type="text/css">#uniform-169_170{ display: inline;}</style><input class="d_c_selector" id="169_170" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 3<style type="text/css">#uniform-169_169{ display: inline;}</style><input class="d_c_selector" id="169_169" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 3.5<style type="text/css">#uniform-169_172{ display: inline;}</style><input class="d_c_selector" id="169_172" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 4<style type="text/css">#uniform-169_171{ display: inline;}</style><input class="d_c_selector" id="169_171" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 4.5<style type="text/css">#uniform-169_174{ display: inline;}</style><input class="d_c_selector" id="169_174" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 5<style type="text/css">#uniform-169_173{ display: inline;}</style><input class="d_c_selector" id="169_173" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 5.5<style type="text/css">#uniform-169_176{ display: inline;}</style><input class="d_c_selector" id="169_176" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 6<style type="text/css">#uniform-169_175{ display: inline;}</style><input class="d_c_selector" id="169_175" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 6.5<style type="text/css">#uniform-169_195{ display: inline;}</style><input class="d_c_selector" id="169_195" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 7<style type="text/css">#uniform-169_194{ display: inline;}</style><input class="d_c_selector" id="169_194" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 7.5<style type="text/css">#uniform-169_196{ display: inline;}</style><input class="d_c_selector" id="169_196" type="checkbox" indeterminate onclick="d_c_selector(169)"/> 8</p></p> <br> </br></form></p> <input type="hidden" id="list_ids_169" value="169_166|169_193|169_181|169_186|169_190|169_177|169_182|169_184|169_168|169_167|169_170|169_169|169_172|169_171|169_174|169_173|169_176|169_175|169_195|169_194|169_196|"/></td>

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Non, tu ne peux pas nous balancer une URL et des centaines de lignes de code minifié en espérant qu'on va fouiller dans tout ce bric-à-brac pour résoudre ton problème. Encore faudrait-il le comprendre, ton problème ! J'ai beau te relire plusieurs fois, je ne comprends rien. On n'est pas dans ta tête, je ne vois même pas quelle partie du site que tu as mis en lien ça concerne. Ajoutons à cela que le code est bancal sur presque toutes les lignes, et mélange du HTML, du CSS inline et ce qui semble être du templating serveur, je souhaite du courage et de la patience à celui qui voudra bien se démener pour t'aider. Moi, je passe mon tour...

Discussions similaires

  1. lier un liste à un groupe de checkbox
    Par sd110676 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2007, 12h18
  2. Evenement sur groupe de checkbox
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2007, 22h11
  3. [RJS] mise à jour ajax sur un groupe de checkbox
    Par gyome314 dans le forum Ruby on Rails
    Réponses: 10
    Dernier message: 13/04/2007, 16h02
  4. cocher un groupe de checkbox et traitement php
    Par Morphleus dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/08/2006, 12h20
  5. validation form en fonction de plusieurs groupe de checkbox
    Par Steph777 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/01/2006, 12h00

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