2010-10-20 7 views
0

J'ai 3 sélections multiples. Dans le premier Select1 (à gauche) je charge un groupe de modules. Dans le 3ème Select3 (à droite) je charge un autre groupe de modules. L'utilisateur peut sélectionner à partir de la gauche et appuyer sur un ajout pour supprimer l'élément de la gauche et l'ajouter à la sélection 2 (milieu). L'utilisateur peut faire la même chose avec le droit, sélectionner les éléments qui touchent un ajout différent où les sélections seront ajoutées au milieu et supprimées de la droite.Jquery supprimer/ajouter l'élément de plusieurs sélectionner à plusieurs sélectionner

Tout cela fonctionne très bien.

Je veux permettre à l'utilisateur de supprimer du multi-sélection du milieu. Je veux seulement une occurrence de la suppression. Si l'utilisateur sélectionne des éléments formellement contenus dans les sélections gauche et droite, je veux qu'ils soient supprimés du milieu et ajoutés à gauche et à droite selon l'origine originale. J'ai une configuration variable pour déterminer d'où vient le module sélectionné dans le milieu. J'ai des problèmes avec l'ajout/le retrait réel de l'ITEM du milieu vers les sélections multiples gauche/droite. J'ai googlé et essayé diverses choses, mais cela prend trop de temps.

Le script suivant affiche uniquement l'interaction avec les sélections Gauche et Moyenne. Je vais utiliser toutes les solutions comme un modèle pour la relation Middle, Right.

Toute aide serait grandement appréciée

<script src="js/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$().ready(function() { 
    $('#add_mod').click(function() { 
    return !$('#select1_mod option:selected').remove().appendTo('#select2_mod'); 
    }); 
    $('#remove_mod').click(function() { 
    var x = "<%= str(modules) %>"; 
    $("#select2_mod option:selected").each(function (i,selected) { 
    var thismod = $(this).text(); 
    if (x.match(thismod)) 
    // HELP Here I want to append this item (text and value) to Select1 
    // HELP Plus, remove this item from Select 2 
          //else after I get a solution for Left/Middle 
    }); 
        // HELP And then return Select1, Select2, Select3 
    }); 
}); 
</script> 

Répondre

1

la réponse comme d'habitude était très simple à la fin.

<script type="text/javascript"> 
     $().ready(function() { 
     $('#add_mod').click(function() { 
      return !$('#select1_mod option:selected').remove().appendTo('#select2_mod'); 
     }); 
     $('#remove_mod').click(function() { 
      var x = "<%= str(modules) %>"; 
      var thisind = 0; 
      $("#select2_mod option:selected").each(function (index) { 
       var thismod = $(this).text(); 
       var thisval = $(this).val(); 
       if (x.match(thismod)) { 
        $(this).remove().appendTo('#select1_mod');} 
       else { 
        $(this).remove().appendTo('#select1_ms');}      
      }); 
     }); 
     $('#add_ms').click(function() { 
      return !$('#select1_ms option:selected').remove().appendTo('#select2_mod'); 
     }); 
     $('#remove_ms').click(function() { 
      return !$('#select2_ms option:selected').remove().appendTo('#select1_ms'); 
     }); 

    }); 
</script> 
Questions connexes