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

jQuery Discussion :

Cacher une liste déroulante suite au choix à OUI d'une autre


Sujet :

jQuery

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut Cacher une liste déroulante suite au choix à OUI d'une autre
    Bonjour,


    En espérant poster au bon endroit, j'ai un problème dans une page PHP, où j'ai un javascript qui tourne dessus, mais qui ne fonctionne pas comme je voudrais. Le PHP je connais (enfin je me débrouille), mais le javascript j'ai un peu de mal.

    je vous explique mon problème : j'ai un formulaire, avec une liste déroulante, qui, lorsqu'elle passe à OUI fait apparaître, à l'heure actuelle un champ (ici le champ date) :



    Quand je la met à OUI, le champ date apparaît. Si c'est vide ou c'est à NON, ça n'affiche pas la date.

    Dont voici le code PHP :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <td>
       <select name='GARANTIE' id='GARANTIE' onchange='sous_garantie_on_change();'>
          <option value=''></option>
          <option value='OUI'>Oui</option>
          <option value='NON'>Non</option>
       </select>
    </td>
    </tr>
    <tr>
       <td>Date de fin de garantie constructeur:</td>
       <td><input type="text" name="FIN_GARANTIE" id="FIN_GARANTIE"/></td>
    </tr>

    Cette vérification, si je comprend bien mon script, est fait par du javascript (en effet, la fonction sous_garantie_on_changes() lance une fonction javascript qui s'appelle sousGarantieChanges), écrit comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function sousGarantieChanges()
    {
    	if($("#GARANTIE").val() == "OUI")
    	{
    		$("#FIN_GARANTIE").parent().parent().css("display", "table-row");
    	}
    	else
    	{
    		$("#FIN_GARANTIE").parent().parent().css("display", "none");
    	}
    }
    Donc jusque là, tout va bien : ça fonctionne correctement. Vous allez me dire mais pourquoi j'écris
    Ben en fait, dans mon premier écran, je voudrais rajouter une liste déroulante, dans la même optique, en la cachant si la liste n'est pas à OUI.


    J'ai donc rajouté dans ma page PHP ceci :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tr>
       <td>Liste2:</td>
       <select name='Liste2' id='Liste2' >
          <option value=''></option>
          <option value='choix1'>Oui</option>
          <option value='choix2'>Non</option>
       </select>
    </tr>

    Après le choix de la liste "GARANTIE".

    Dans mon javascript j'ai une modif comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function sousGarantieChanges()
    {
    	if($("#GARANTIE").val() == "OUI")
    	{
    		$("#FIN_GARANTIE").parent().parent().css("display", "table-row");
    		$("#Liste2").parent().parent().css("display", "table-row");
    	}
    	else
    	{
    		$("#FIN_GARANTIE").parent().parent().css("display", "none");
    		$("#Liste2").parent().parent().css("display", "none");
    	}
    }
    Pensant que la liste allait être cachée. Malheureusement ce n'est pas le cas : Même lorsque je met sur NON ma liste GARANTIE, LISTE2 apparaît quand même

    n'est-ce pas comme ça qu'il faut faire la modif dans le javascript ?


    petite question subsidiaire : pour ma culture personnelle, à quoi sert le "#" dans le javascript devant le nom "#FIN_GARANTIE" par exemple ?

    En vous remerciant par avance de vos réponses, et en espérant avoir été assez clair.
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Bonjour,

    première remarque : ta fonction JS sousGarantieChanges() n'est jamais appelée dans la liste2 (pas de onchange sur le <select> ?)
    deuxième remarque : en jQuery, le # permet de sélectionner un élément HTML par son id. Donc :
    ce code sélectionne l'élément HTML d'id : FIN_GARANTIE, qui est un <input>
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    jette également un oeil sur jQuery.closest() .

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Bonjour,


    Je te remercie pour ta réponse, mai j'ai pas l'impression que ça réponde à mon besoin.

    En effet, je voudrais que la Liste2 soit cachée sur le fait que la liste GARANTIE soit à OUI ou NON.

    je viens de remarquer que j'avais oublié de mettre les images
    Donc je vais la mettre ici : Voici ce que j'ai actuellement :

    Nom : liste1.png
Affichages : 392
Taille : 1,9 Ko

    Je voudrais avoir ça :

    Nom : liste_oui.png
Affichages : 402
Taille : 1,4 Ko

    Si la liste GARANTIE est à OUI.

    Si c'est non ou vide, il faudrait avoir ça :

    Nom : liste_non_vide.png
Affichages : 404
Taille : 824 octets

    En Gros, quand c'est vide ou non, le champ date et la liste 2 n'apparait pas.

    Est-ce plus clair avec les images que j'ai oublié de mettre ?

    je te remercie en tout cas de te pencher sur mon problème
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    Au temps pour moi j'avais rien compris ^^.
    Peut-être sur ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tr>
       <td>Liste2:</td>
       <select name='Liste2' id='Liste2' >
          <option value=''></option>
          <option value='choix1'>Oui</option>
          <option value='choix2'>Non</option>
       </select>
    </tr>
    d'après le HTML, le premier parent de #Liste2 est un <tr>
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#Liste2").parent().parent().css("display", "table-row");
    je supprimerais un .parent() où alors placer le <select> dans un <td>.
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Re,

    Malheureusement, enlever un parent() (et même en rajouter un ) ne change rien

    Par contre, je te remercie car je crois que tu m'as fait comprendre l'utilité du parent (car je ne savais pas à quoi ça servait).

    Par contre, par rapport à ce que tu dis, mon select EST dans un td, c'est pour ça, du coup, qu'il y a 2 parent.

    En fait, j'ai un TR, et 2 TD : le TR me permet d'avoir la ligne souhaitée (en me basant sur mes souvenirs HTML de mon IUT ), et les TD sont :
    - le titre de ma liste (ou ma textbox) écrit en dur (ici c'est Liste2)
    - mon "objet" (ici ma ListBox).

    En fait, mon tableau comporte 13 lignes et 2 colonnes en quelque sorte. Mais je n'ai écrit que la fin, car c'est la fin qu m'intéresse, et que je n'arrive pas à faire disparaitre

    Et si j'enlève le TD d'où est ma liste, la colonne disparaît complètement, et heuu ça non donc forcément, la ListBox doit être dans un TD.


    NoSmoking,

    Merci pour ton intervention, j'ai un peu regarder la fonction closest, mais je comprend rien comment ça marche Comme dit plus haut, mes connaissances en java sont assez limitées. Le code que j'ai mis ici et un code récupéré d'un ancien stagiaire, et c'est moi qui suit en charge de la maintenance, et là on me demande une évolution, en rajoutant des champs..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    yes, ça marche !

    Heuu en fait j'ai un peu honte. J'ai vidé mon cache, et après actualisation, le champ était bien caché. Je pensais pas que le cache d'Internet gardait une info de ce style. Très étrange !

    En tout cas, je vous remercie car grâce à vous, j'ai appris des choses
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Membre chevronné
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Par défaut
    En fait, j'ai un TR, et 2 TD : le TR me permet d'avoir la ligne souhaitée (en me basant sur mes souvenirs HTML de mon IUT ), et les TD sont :
    - le titre de ma liste (ou ma textbox) écrit en dur (ici c'est Liste2)
    - mon "objet" (ici ma ListBox).
    Peut-on avoir le code HTML?

    car d'après ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tr>
       <td>Liste2:</td>
       <select name='Liste2' id='Liste2' >
          <option value=''></option>
          <option value='choix1'>Oui</option>
          <option value='choix2'>Non</option>
       </select>
    </tr>
    le <select> n'est pas dans un <td> mais directement dans un <tr>
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Ah bah mince j'ai du oublié de le mettre parce que mon Select, dans mon vrai code, ile st bien dans un TD. C'est un oubli de ma part, j'en suis désolé

    Je comprend mieux pourquoi tu as été induit en erreur du coup
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/05/2014, 17h23
  2. Réponses: 8
    Dernier message: 17/10/2007, 18h37
  3. Réponses: 1
    Dernier message: 04/09/2007, 08h56
  4. Réponses: 15
    Dernier message: 19/04/2007, 10h56
  5. Réponses: 27
    Dernier message: 12/04/2007, 10h23

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