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 :

Liste déroulante liées


Sujet :

jQuery

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Liste déroulante liées
    Bonjour à tous,

    Je commence à coder avec Jquery depuis quelques jours et je me retrouve dans un cas qui doit être classique pour certains...

    Je dois lier 4 listes déroulantes entres elles.
    J'ai 4 divs avec 1 select dans chacune d'entre elles.

    Code php : 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
    <div id="div_select_supcat">
     
    <select id="select_select_supcat">
    <option value='0'>S&eacute;lection super cat&eacute;gorie</option>
    <?php
     
    $result = mysql_query("SELECT id_supcat, nom_supcat FROM super_categories ORDER BY nom_supcat ASC");
     
    while ($row = mysql_fetch_array($result, MYSQL_BOTH))
    {
     echo "<option value='".$row["id_supcat"]."'>".$row["nom_supcat"]."</option>";
    }
    ?>
    </select>
    </div>
    <div id="div_select_cat"></div>
    <div id="div_select_souscat"></div>
    <div id="div_select_spec"></div>


    Je fais un appel lorsque je sélectionne une valeur dans la première liste et je l'injecte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $("#select_select_supcat").change( function ()
    {
        if(this.value != 0)
        {
             $.post("files/fonctions.php", { name: "select_cat", cat: "categories", valeur: this.value },
             function(data)
             {
                 $("#div_select_cat").html(data);
              });
         }
    });
    Contenu de fonctions.php :

    Code php : 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
    switch($_POST["name"])
    {
         case "select_cat":
     
              switch($_POST["cat"])
              {
                     case "categories":
     
                          $result = mysql_query("SELECT id_cat, nom_cat FROM categories WHERE id_supcat=".$_POST["valeur"]."");
     
                           echo "<select id=\"select_select_cat\">";
                           echo "<option value='0'>S&eacute;lection cat&eacute;gorie</option>";
     
                           while ($row = mysql_fetch_array($result, MYSQL_BOTH))
                           {
                                echo "<option value='".$row["id_cat"]."'>".$row["nom_cat"]."</option>";
                           }
                           echo "</select>";
     
                        break;
     
                          ..............
    }


    Mais lorsque je sélectionne une valeur dans ma seconde liste je ne récupère plus la valeur de celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $("#select_select_cat").change( function ()
    {
        alert(this.value);
    });

    Quelqu'un aurait-il une petite solution à mon problème, merci d'avance.

  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 : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

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

    A voir ton code je suppose que tu as assigné les évènements onchange
    sur les listes lors de la création initiale de la page.

    Hors, lors des mises à jours des listes tu injecte du html, ceci a pour effet
    de remplacer les éléments DOM existants par de nouveaux. Tu perds ainsi
    l'assignation des évènements.

    Il faudrait que tu réassigne les évènements par un petit script que tu peux
    générer depuis php après la balise </select>, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<script type='text/javascript'>";
    echo '$("#select_select_cat").change( doChangeCat );';
    echo "</script>";
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

Discussions similaires

  1. Debug script listes déroulantes liées
    Par AnTiX dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/04/2005, 12h03
  2. Griser 1 liste déroulante liée à une autre, pb de concaténat
    Par linou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 16h45
  3. listes déroulantes liées
    Par k4eve dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/04/2004, 15h11
  4. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 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