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 :

Mise à jour select


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Mise à jour select
    Bonjour,

    J'ai un souci de rafraîchissement de liste déroulante ...

    Voici le code JS :
    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
     $(function() {
         $("#select_delai").selectmenu({
             width: 337
         });
     });
     
     $(document).ready(function() {
         $("#select_client").selectmenu({
             width: 337,
             change: function() {
                 var client = $('#select_client').val();
                 $.ajax({
                     type: "POST",
                     data: {
                         "nom_select_client": client
                     },
                     url: "../../controllers/facturation/aff_parametre_client.php",
                     dataType: "json",
                     success: function(data) {
                         $("#select_delai option").filter(function() {
                             return $(this).text() === data[0];
                         }).prop('selected', true);
                     }
                 });
             }
         });
     });
    Et le select qui doit obtenir le delai :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select class="input_facture" name="delai_paiement" id="select_delai">
        <?php
        foreach ($liste_delai_p_ AS $value) {
            echo "\t" . '<option value="' . $value . '">' . $value . '</option>' . "\n";
        }
        ?>
    </select>

    Si je choisis le client sur la 1ère liste, rien ne se passe, je fais un F5 et hop le bon délai apparaît ...
    Si je commente la partie en haut avec la fonction .selectmenu qui me sers juste à avoir une belle liste jquery avec son css automatique, et bien la liste déroulante s'actualise directement sans F5...

    Je peux avoir 2 fonctions sur la même liste déroulante, non ?

    Merci pour votre aide !
    Dernière modification par NoSmoking ; 11/05/2015 à 23h10. Motif: Indentation

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    J'ai pas tout saisit ton code , si j'ai bien compris tu souhaite sélectionner le bon option selon la valeur de retour de ta requête AJAX dans ce cas fait simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     $.ajax({
                  type: "POST",
                  data: {"nom_select_client": client},
                  url: "../../controllers/facturation/aff_parametre_client.php",
                  dataType: "json",
                  success: function(data) {
                     $("#select_delai option").each(function(){
                         if($(this)[0].value === data[0]){
                           $(this)[0].selected = true;
                         }
                      });
                   }
     });
    Bonne continuation.

  3. #3
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    success: function(data) {
        $("#select_delai option").filter(function() {
            return $(this).text() === data[0];
        }).prop('selected', true);
    }
    Que de complications pour rien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    success: function(data) {
        $("#select_delai option").val(data[0]);
    }
    est tellement plus simple.

    Sinon, si l'on en croit ton code, la première fonction est exécutée en dehors du ready(), il y a donc de fortes chances pour qu'elle le soit avant que le select correspondant n'existe dans la page et ne peut donc avoir aucun effet.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Merci pour vos réponses ! Je ne vais pouvoir tester votre que ce soir ...

    En attendant, je vais apporter un peu d'explications !

    Ce code :

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(function() {
         $("#select_delai").selectmenu({
             width: 337
         });
     });

    Il n'est pas dans le ready mais fonctionne au chargement de la page. Il sert seulement à gérer l'aspect de la liste déroulante pour la sélection du délai. Vous savez, au lieu d'avoir une liste toute moche et grise, elle devient plus agréable avec le jquery et ses thèmes CSS ... (à moins d'une grosse connerie de ma part, l'aspect des select ne peut pas être modifié en CSS simple sans passer par JS ? C'est ce que j'avais compris sur le net...)

    Pour ce code :

    Code JS : 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
     
    $(document).ready(function() {
         $("#select_client").selectmenu({
             width: 337,
             change: function() {
                 var client = $('#select_client').val();
                 $.ajax({
                     type: "POST",
                     data: {
                         "nom_select_client": client
                     },
                     url: "../../controllers/facturation/aff_parametre_client.php",
                     dataType: "json",
                     success: function(data) {
                         $("#select_delai option").filter(function() {
                             return $(this).text() === data[0];
                         }).prop('selected', true);
                     }
                 });
             }
         });
     });

    Un client va avoir un délai de paiement par défaut, 30, 60, 90 jours ... Ce que je voulais, c'est quand on sélectionne dans la liste le client, la code va chercher dans la bdd par l’intermédiaire du fichier aff_parametre_client.php la valeur et sans rechargement de page, la liste des délais va pointer sur la bonne valeur.
    (Pour information, j'ai également un type à modifier de la même manière);

    Je ne sais pas si mes explications répondent à vos questions.

    Merci à vous

  5. #5
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ouais... faut pas faire attention, depuis hier, j'ai tendance à être régulièrement à côté de la plaque et c'était le cas dans ma réponse...

    En fait, ce qu'il se passe, c'est que le plugin est mal foutu !
    La plupart des plugins de ce genre créent un nouvel élément pour l'affichage et lient la valeur de cet élément à celle du select d'origine. Sauf que là, ça ne semble pas être le cas, du coup, quand tu changes la valeur du select par programmation, il faut réinitialiser la valeur de l'élément visuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    success: function(data) {
        $("#select_delai").val(data[0]);
        $("#select_delai").selectmenu( "refresh" );
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Invité
    Invité(e)
    Par défaut
    Même quand t'es à côté de la plaque, tu ponds un meilleur code que moi !

    Ok je vais tenter ça ! En tout cas, ton explication explique sûrement un autre de mes problèmes !

    Merci, je passe en résolu ce soir si tout est ok !

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

Discussions similaires

  1. Mise à jour select
    Par Décibel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/11/2008, 13h51
  2. Mise à Jour d'une table via un Update (select)
    Par Arola78 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/09/2006, 14h59
  3. selection mulitple pour mise à jour
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 15h39
  4. [AJAX] Case à cocher-->mise à jour select
    Par senacle dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/06/2006, 16h11
  5. mise à jour TADOQuery select...union dans un dbgrid
    Par newfsch dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/04/2006, 09h16

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