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 :

Plugin MultiSelect et appel AJAX


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Par défaut Plugin MultiSelect et appel AJAX
    Bonjour à tous,

    J'essaye d'utiliser le plugin MultiSelect de loudev derrière un appel AJAX.

    Pour faire simple, je choisis une valeur dans une première liste simple (cdg) qui déclenche un appel AJAX vers la page get_gdp_user.php pour récupérer les choix possibles dans une seconde liste multiple (caff) à laquelle je souhaite appliquer le plugin multiselect.

    L'appel AJAX fonctionne correctement et renvoie bien le contenu de la seconde liste.

    En revanche, je ne sais pas pourquoi le plugin ne s'applique pas après l'appel AJAX alors que j'ai bien ma commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#caff").multiSelect();
    Pour être plus juste, il semble s'applique mais la liste des choix est vide...

    voici le code simplifié:
    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
     
    <body>
    <select name="cdg" id="cdg">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    </select>
     
    <select id="caff" multiple="multiple">
     
    </select>
     
    <script>
    var $cdg = $("#cdg");
    var $caff = $("#caff");
     
    $cdg.change(function(){
     
    	$.get("get_gdp_user.php",
    			{cdg : $cdg.val()},
    			function(data){
    				$caff.html(data);
    				});
    $("#caff").multiSelect();
    });
    </script>
    </body>
    D'ailleurs, si je supprime l'appel AJAX et que je remplie en dur les options de la liste caff dans le code, la liste de choix multiple s'affichera correctement....

    Une idée?

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    AJAX ? Activation d'un plugin ?

    AJAX est asynchrone donc l'activation doit se faire dans la méthode "done".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var 
      $cdg = $("#cdg"),
      $caff = $("#caff");
     
    $cdg.on( "change", function(){
      $.get( "get_gdp_user.php", { "cdg" : $cdg.val()}, function( data ){
        $caff
          .html(data)
          .multiSelect();
      });
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Par défaut
    Alors le problème bouge mais n'est pas résolu.
    Le plugin s'applique bien lors de la première selection d'un element dans la liste cdg.
    En gros, si je choisis 1 dans la liste cdg, j'obtiens les valeurs pour la liste caff et le plugin agit correctement sur ma liste caff...
    Si je choisis ensuite 2 dans la liste cdg, l'appel AJAX se fait, renvoie les bonnes valeurs mais je conserve à l'affichage les résultats du choix 1....

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Logique.

    Il faut détruire l'instance du plugin avant de la reconstruire.

    Si le plugin n'a pas une méthode "delete", il faut tester le code suivant, mais sans garantie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var 
      $cdg = $("#cdg"),
      $caff = $("#caff"),
      $MultiSelect = null;
     
    $cdg.on( "change", function(){
      $MultiSelect = null;
     
      $.get( "get_gdp_user.php", { "cdg" : $cdg.val()}, function( data ){
        $caff.html(data);
        $MultiSelect = $caff.multiSelect();
      });
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Par défaut
    Bon, malheureusement, pas de delete et ta methode n'a pas fonctionné....
    Connais tu éventuellement un autre plugin qui permet d'avoir une fenetre de selection "à deux cadres" et qui permet de se rafraichir après un appel AJAX?

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    J'étais pressé ce matin, j'ai oublié une instruction. Version corrigée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var 
      $cdg = $("#cdg"),
      $caff = $("#caff"),
      $MultiSelect = null;
     
    $cdg.on( "change", function(){
      $caff.empty();
      $MultiSelect = null;
     
      $.get( "get_gdp_user.php", { "cdg" : $cdg.val()}, function( data ){
        $caff.html(data);
        $MultiSelect = $caff.multiSelect();
      });
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. Afficher une message d'attente lors d'un appel ajax
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 06/11/2007, 22h15
  2. [script.aculo.us] Appel Ajax dans Ajax
    Par guiltouf dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 22/05/2007, 12h29
  3. [Dojo] Simple data grid sans appel Ajax
    Par Den's dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 14/12/2006, 08h23
  4. [AJAX] appel Ajax DOM
    Par MALAGASY dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/09/2006, 13h16
  5. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40

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