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 :

Ajouter ou supprimer un champ de formulaire en fonction d'un menu déroulant


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Ajouter ou supprimer un champ de formulaire en fonction d'un menu déroulant
    Bonjour

    Je galère depuis des heures sur ce problème...

    Dans mon formulaire d'inscription, l'utilisateur doit saisir son sexe à l'aide d'un menu déroulant, et je voudrais que :

    - Si c'est une femme, le champ 'poitrine' apparaisse pour qu'elle puisse saisir sa poitrine

    - Si c'est un homme, le champ 'poitrine' disparaisse

    - Que par défaut, à l'arrivée sur la page, le champ 'poitrine' soit apparent

    Pour l'instant à l'arrivée le champ n'est pas apparent, tout est ok.
    Il apparait quand on choisit 'femme' dans le menu déroulant,
    mais impossible de le faire disparaître quand on choisit 'homme'...

    Autre bizarrerie : Dans le javascript, le champ 'poitrine' n'apparait que si je mets 'if ( choix == 0)', alors que je devrais mettre 'if ( choix == 1)'. Si je mets 'if ( choix == 1)', le champ 'poitrine' n'apparait plus quand on choisit 'femme' dans le menu déroulant...

    Voici la partie javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function champ_poitrine() {
    choix = document.getElementById('sexe').value;
     
    if ( choix  == 0) // <== ici je devrais mettre 1, mais si je mets 1 rien ne se passe...
    {document.getElementById('boob').style.visibility = 'visible';}
     
    else {document.getElementById('boob').style.visibility = 'hidden';}
    }
    Dans l'html pour choisir le sexe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <select name="sexe" id="sexe" style="width:110px" onChange="champ_poitrine()">
     
    <option value="0"<?php if(!isset($_POST['sexe'])) echo ' selected="selected"';?>>choisissez...</option>
     
    <option value="1"<?php if((isset($_POST['sexe']))&&(($_POST['sexe'])== 1)) echo ' selected="selected"';?>>Une femme</option>
     
    <option value="2"<?php if((isset($_POST['sexe']))&&(($_POST['sexe'])== 2)) echo ' selected="selected"';?>>Un homme</option>
     
    </select>
    Et enfin dans l'html pour faire apparaitre le champ poitrine :
    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
    <tr>
    <td colspan="2" align="left" class="Style14">
    <div id="boob" style="visibility:hidden">
     
    <table width="529" height="31" border="0" cellpadding="0" cellspacing="0">
     
      <tr>
          <td width="225" align="left" class="Style14">Ma poitrine</td>
          <td width="304" align="left" class="Style4"><select name="poitrine"  
          id="id_poitrine" style=" width:110px">
     
          <option selected="selected"><?php echo 'choisissez...';?></option>
     
          <option value="75 A"<?php   
          if((isset($_POST['poitrine']))&&(($_POST['poitrine'])== "75 A"))
          echo ' selected="selected"'; ?>>75 A</option>
     
         <option value="75 B"<?php
         if((isset($_POST['poitrine']))&&(($_POST['poitrine'])== "75 B"))
         echo ' selected="selected"';?>>75 B</option>
    // etc.., etc...
        </select></td>
      </tr>
    </table></div></td>
    </tr>
    Je précise que je suis débutant...! Essayez d'être explicite svp...!

    Merci de votre aide !

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    je modifierai ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function champ_poitrine() {
      var liste = document.getElementById('sexe');
      var choix = liste.options[liste.selectedIndex].value;
      document.getElementById('boob').style.visibility = (choix==1) ? 'visible' : 'hidden';
    }

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Marche pô...
    Bonjour et merci pour ta réponse

    Je viens d'essayer de remplacer ma fonction par celle que tu m'as indiquée.

    A l'arrivée le champ n'est pas apparent, mais maintenant plus rien ne se passe qu'on choisisse 'homme' ou 'femme' dans le menu déroulant...

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Que te donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function champ_poitrine() {
      var liste = document.getElementById('sexe');
      var choix = liste.options[liste.selectedIndex].value;
      alert(choix);
    }

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Par défaut Etrangement bizarre...
    L'alerte m'affiche '0' pour les 3 options du menu déroulant... Que je choisisse 'Choisissez...', 'femme', ou 'homme'...

    C'est ce que je disais dans l'énoncé du problème je ne comprends pas pourquoi...

    Car si je valide le formulaire après avoir saisi 'femme', j'ai bien la valeur '1' dans la base de données.

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Peux tu donner le code html généré stp ?

Discussions similaires

  1. Ajouter et supprimer des champs d'un formulaire
    Par m-t4rik dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/05/2013, 02h30
  2. [AC-2007] Actualiser un formulaire en fonction d'un menu déroulant
    Par tomatotep dans le forum IHM
    Réponses: 17
    Dernier message: 02/07/2012, 09h07
  3. Afficher/Masquer un champ de formulaire en fonction d'un menu déroulant
    Par kryptong dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/06/2012, 15h31
  4. ajouter et supprimer un champ de formulaire
    Par sativa808 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/07/2008, 19h32
  5. [JavaScript] [SRC] ajouter ou supprimer un champ texte
    Par javatwister dans le forum Contribuez
    Réponses: 5
    Dernier message: 01/08/2007, 15h53

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