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 :

Récupération de la sélection sur une liste [AJAX]


Sujet :

jQuery

  1. #1
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut Récupération de la sélection sur une liste
    Bonjour,

    Bon voilà le but de mon bout de code: Je rempli mon select grâce à une requête ajax (ça marche) puis lors de la sélection d'un grossiste (de ma liste) je veux déclancher la construction d'un tableau.

    Code javascript : 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
    41
    42
    43
    44
    45
    46
     $(function () {
                $('.error').hide();
     
                $.ajax({
                    type: "POST",
                    url: "Edit_couleur.aspx/GetGrossistes",
                    data: '{"PageEnCours":"' + document.location.href.toString() + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        $('#lstGrossistes').append($('<option>', { value: "-1", text: "Sélectionnez un grossiste" }));
                        if (msg.d != null) {
                            $.each(msg.d, function (i, item) {
                                $('#lstGrossistes').append($('<option>', { value: item.IdGros, text: item.Libelle }));
                            });
                        }
                    },
                    error: function () {
                        alert('oups');
                    }
                });
     
                var CtrlGros = $('#lstGrossistes option:selected');
                var Gros = CtrlGros.val();
     
                $('#lstGrossistes').change(function () {
                    if (Gros == "-1") {
                        $('#divcouleur').html("");
                    }
                    else {
                        $.ajax({
                            type: "POST",
                            url: "Edit_couleur.aspx/GetCouleur",
                            data: '{"IdGros":' + Gros + ',"PageEnCours":"' + document.location.href.toString() + '"}',
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function (msg) {
                                BuildTable(msg);
                            }
                        });
                    }
                });
     
     
     
            });

    Mon problème est que var
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var Gros = CtrlGros.val();
    me renvoie undifined

    Quand je regarde le code généré sur ma liste j'ai
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <p style="float: right;">
        <select id="lstGrossistes">
        </select>
     
        </p>

    quelqu'un peut me dire comment récupérer proprement mon item sélectionné dans ma liste?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut


    Expliqué et résolu un nombre incalculable de fois !
    Tu essayes d'utiliser des données avant de les avoir reçues !

  3. #3
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Pas vraiment d'accord je viens de tomber sur ce site

    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
    $('#lstGrossistes').change(function () {
                    var Gros = $(this).val();
                    if (Gros == "-1") {
                        $('#divcouleur').html("");
                    }
                    else {
                        $.ajax({
                            type: "POST",
                            url: "Edit_couleur.aspx/GetCouleur",
                            data: '{"IdGros":' + Gros + ',"PageEnCours":"' + document.location.href.toString() + '"}',
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function (msg) {
                                BuildTable(msg);
                            }
                        });
                        $('.error').hide();
                    }
                });
    Avec cette syntaxe , ça marche

    La différence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Gros = $(this).val();
    alors qu'avant je passait par $('#lstGrossistes option:selected').val();

  4. #4
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Par contre tu as peut être raison ...

    ma fonction
    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 BuildTable(msg) {
                var table = '<table><thead><tr class="Entete"><th>Libellé</th><th>Code</th><th colspan="2"></th></thead><tbody>';
     
                for (var post in msg.d) {
                    var row = '<tr id=' + msg[post].IdCouleur + '>';
     
                    row += '<td>' + msg[post].Libelle + '</td>';
                    row += '<td>' + msg[post].IdCouleurGros + '</td>';
                    row += '<td>' + '</td>';
                    row += '<td><img src="/Images/suppr.png" alt="Supprimer" id="Delete"></td>';
     
                    row += '</tr>';
     
                    table += row;
                }
     
                //Pied pour ajout
                 table += '<tr class="Entete2"><td><input type="text" id="txtCouleur" /><br /><label class="error" for="txtCouleur" id="Lib_error">Champs Libellé obligatoire.</label></td>'
                 table += '<td><input type="text" id="txtCode" /><br /></td>'
                 table += '<td><br /><input type="hidden" id="LogoName" /><div id="MyDiv"></div>'
     
                 table += '<br /><label class="error" id="Img_error">Champs Image obligatoire.</label></td>'
                 table += '<td><img src="/Images/add.png" alt="Ajouter" id="Add" /></td></tr>'
     
                table += '</tbody></table>';
     
                $('#divcouleur').html(table);
            };
    Plus particulièrement cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     table += '<br /><label class="error" id="Img_error">Champs Image obligatoire.</label></td>'
    Elle eest bien créée
    Mais sur mon change de ma liste de grossistes je lui dit de les cacher
    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
     $('#lstGrossistes').change(function () {
                    var Gros = $(this).val();
                    if (Gros == "-1") {
                        $('#divcouleur').html("");
                    }
                    else {
                        $.ajax({
                            type: "POST",
                            url: "Edit_couleur.aspx/GetCouleur",
                            data: '{"IdGros":' + Gros + ',"PageEnCours":"' + document.location.href.toString() + '"}',
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function (msg) {
                                BuildTable(msg);
                            }
                        });
                        $('.error').hide();
                    }
                });
    Mais au final ... il apparaissent à l'écran
    quand je fait afficher le code source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <div id="divcouleur">
        </div>
    c'est vide alors qu'à l'écran j'ai bien mon tableau ...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/09/2009, 03h40
  2. Réponses: 1
    Dernier message: 10/07/2006, 13h40
  3. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  4. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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