2012-07-17 2 views
0

Je peux transférer les éléments sélectionnés à partir d'un élément de sélection multiple dans l'autre:Comment transférer tous les éléments d'un select multiple dans un autre select multiple?

<script language="javascript"> 
    $().ready(function() { 
    $('#btnOne').click(function() { 
     return !$('#users_interdits option:selected').remove().appendTo('#users_autorises'); 
    }); 
    $('#btnUndoOne').click(function() { 
     return !$('#users_autorises option:selected').remove().appendTo('#users_interdits'); 
    }); 
    }); 
</script> 

Ce code ne prend pas en compte le bouton « envoyer tous » dans ce cas functionnality lorsque je clique sur un « envoyer tous », puis tous les éléments restants dans #users_interdits sont transférés dans #users_autorises. Comment faire cela?

+0

Postez le code pour « Envoyer tout » gestionnaire ... – Chandu

+1

'appendTo' se déplace automatiquement les éléments d'un endroit dans les DOM dans un autre, il n'y a aucune raison de faire un .remove() avant votre appel appendTo. – Ohgodwhy

+0

Avez-vous essayé quelque chose? Avez-vous écrit le code que vous avez? Il est trivial de mettre en œuvre ce dont vous avez besoin en utilisant le code que vous avez déjà comme point de départ. – lanzz

Répondre

1

Il vous suffit de retirer le sélecteur :selected pour correspondre à toutes les options:

$("#users_interdits option").appendTo("#users_autorises"); 
1
$('#btnOne, #sendAll').on('click', function() { 
    $('#users_interdits option'+($(this).is('#btnOne') ? ':selected' : '')) 
     .remove() 
     .appendTo('#users_autorises'); 
}); 

La seule différence est que, d'envoyer TOUTES les options à travers, vous ne nee le pseudo-sélecteur :selected.

Je suppose que vous voulez dire que vous voulez réellement vider les options d'un select et les déplacer vers un autre, plutôt que d'avoir des options live dans les deux sélections. Si ce dernier, il suffit de se débarrasser de l'appel à remove().

+1

Voir le commentaire d'Ohgodwhy ci-dessus: 'appendTo()' supprimera les éléments avant de les ajouter à leur nouveau parent, donc appeler 'remove()' n'est pas nécessaire ici. Vous devriez 'cloner()' les éléments si vous voulez qu'ils existent chez les deux parents. –

+0

Ah, intéressant - je pensais que "append()" était cloné plutôt que supprimé. +1 – Utkanos