begin process at 2012 05 30 05:02:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Divers

 > 

supprimer des valeurs dans un select multiple


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

supprimer des valeurs dans un select multiple

jeudi 29 novembre 2007 à 20:49:06 | supprimer des valeurs dans un select multiple

attentio

bonjour j'ai probleme avec une fonction JS. voila elle etait censé boucler pour supprimer tout les valeurs mais voila ca ne marche pas
par contre si je boucle pour selectionner toutes les valeur ca marche tres bien .. je ne comprends pas pourquoi
si j'ai  ...

Code :
  1. <select multiple>
  2. <option value="01">01</option>
  3. <option value="02">02</option>
  4. <option value="03">03</option>
  5. <option value="04">04</option>
  6. </select>


les boites d'alerte vont me donner si je mets simplement   l1.options[i].selected="selected";
alert > 01
alert > 01 non
alert > 02
alert > 02 non
alert > 03
alert > 03 non
alert > 04
alert > 04 non

... ca marche tres bien  !!!
 
par contre si j'ajoute la lign suivante l1.options[i]=null;
ca me donne ...
alert > 01
alert > 02 non
alert > 03
alert > 04 non

et la moitié des valeurs n'a pas été supprimer
 
je ne comprends pas pourquoi ...
 
voici mon code complet ...

Code :
  1. var l1 = document.getElementById('liste2');
  2. for (var i=0; i < l1.options.length; i++){
  3. alert(l1.options[i].value );
  4. // ca marche
  5.   l1.options[i].selected="selected";
  6. // ca marche pas
  7. l1.options[i]=null;
  8. alert(l1.options[i].value + ' non');
  9. }


 
merci de votre aide

jeudi 29 novembre 2007 à 21:52:02 | Re : supprimer des valeurs dans un select multiple

PetoleTeam

Membre Club
Bonjour,
l'affectation de nul à l'option ne la supprime pas
...

Pour supprimer physiquement l'option il te faut utiliser la méthode removeChild
exemple :
//----------------
function Destroy(){
  var Obj = document.getElementById('liste2');
  for (var i=0; i < Obj.options.length-1; i++){
    Obj.removeChild( Obj.options[i]);
    i--; // OBLIGATOIRE de decrementer i l'option n'existant plus, il faut revenir en arrière sinon on n'en detruit qu'un sur deux
  }
}

voila mais il y a plus radical mais moins DOM...
//----------------
function Destroy(){
  var Obj = document.getElementById('liste2');
  Obj.innerHTML = "";
}
;0)
vendredi 30 novembre 2007 à 09:32:48 | Re : supprimer des valeurs dans un select multiple

bultez

Membre Club


Bonjour,
    je préfère utiliser length.... mais chacun ses goûts !


<select multiple id="toto">
   <option value="hein">un</option>
   <option value="de">deux</option>
   <option value="trou à">trois</option>
   <option value="cat">quatre</option>
</select>

<script type="text/javascript">
    document.getElementById("toto").length=0;
</script>



                Cordialement            Bul         [mon Site]     [M'écrire]
vendredi 30 novembre 2007 à 13:48:49 | Re : supprimer des valeurs dans un select multiple

attentio

J'ai essayé, ca ne marche pas ! le script fait planter ma page
petite precision ma fonction doit vider ce select mais injecter les valeurs suprimés
dans un autre select "liste1".
C pour ça que j'avais pensé a ceci :
il selectionne la premiere valeur, il l'injecte dans la liste1 (l2) puis efface la valeur selectionné puis selectionne la deuxieme valeur etc etc ...

  var l1 = document.getElementById('liste2');
  var l2 = document.getElementById('liste1');

 for (var i=0; i < l1.options.length; i++){
   alert(l1.options[i].value );
   l1.options[i].selected="selected";
  o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
  l2.options[l2.options.length]=o;
  l1.options[l1.options.length].selected.length=0;
  alert(l1.options[i].value + ' non');
}



merci encore de votre aide

vendredi 30 novembre 2007 à 13:55:44 | Re : supprimer des valeurs dans un select multiple

bultez

Membre Club


>>j'ai essayé, ca ne marche pas ! le script fait planter ma page
    tu causes à qui ?
    si c'est 0 moi, si, si, mon exemple fonctionne et sans planter
    et je parierais bien la même chose pour ce que propose PetoelTeam !
    à priori, tu n'appliques pas comme il faut

>>petite precision ma fonction doit vider ce select mais injecter les valeurs
>>suprimées dans un autre select "liste1".
    ah... la question est différente !

    un  tout ch'tit exemple d'utilisation ici


                Cordialement            Bul         [mon Site]     [M'écrire]
vendredi 30 novembre 2007 à 14:22:51 | Re : supprimer des valeurs dans un select multiple

attentio

désolé bultez ... vraiament toutes les excuses  j'avais oublié de renommer ma variable

j'ai fait ceci ...
  for (var i=0; i < l1.options.length; i++){
 l1.options[i].selected="selected";
 o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
 l2.options[l2.options.length]=o;  
    l1.removeChild( l1.options[i]);
    i--;  }

et ca marche tres bien !
et document.getElementById("liste2").length=0; marche très bien aussi

par contre j'ai un autre petit soucis lorsque je réinjecte les valurs dans la "liste 1"(l2) il me les places bien entendu a la fin du select hors je souhaiterais que mes option s'organise en fonction de leur valeurs 

ex : si j'ai 
  1. <select multiple name="liste1">
  2. <option value="01">01</option>
  3. <option value="03">03</option>
  4. <option value="04">04</option>
  5. </select>

 

  1. <select multiple name="liste2"> 
  2. <option value="02">02</option>
  3. </select>

    et que je veux envoyer la valuer 02 dans la liste 1, il va se placer à la fin hors je voudrais qu'il se place entre 01 et 03.
    Comment pourrais-je m'y prendre

merci encore infiniment

vendredi 30 novembre 2007 à 14:45:18 | Re : supprimer des valeurs dans un select multiple

bultez

Membre Club


>>>...qu'il se place entre 01 et 03.
            Comment pourrais-je m'y prendre

    un  tout ch'tit exemple d'utilisation ici


                Cordialement            Bul         [mon Site]     [M'écrire]
vendredi 30 novembre 2007 à 17:55:11 | Re : supprimer des valeurs dans un select multiple

attentio

aie ... aie  ... aie !!!
je m'en sort pas ! je n'arrive pas a ordonner les elements de liste 1 tel qu'ils  le sont pas defaut ...
je ne sais pas trop comment m'y prendre
voici mon code si vous arrivez à vous y retrouver :

======================================
  var l1 = document.getElementById('liste2');
  var l2 = document.getElementById('liste1');

  for (var i=0; i < l1.options.length; i++){
 
// on selectionne les un apres les autres les elements de la liste2
 l1.options[i].selected="selected";
 
// on bascule l'element de la liste 2 vers la liste1
 o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value); 

/////////////////////////////////////////////// A REVOIR//////////////////////////////////
//on place l'element dans la liste1 par ordre numerique

var tmp=l1.options[i].value.toLowerCase();
 var pos;
// on boucle
 for (var n=0;n<l2.length;n++)
      { 
   pos=l2.options[n].value;
if ( pos >= tmp )
   {     
   l2.options[l2.options.length]=o;
// on deselectionne l'element ajouté dans la liste1  
 o.selected="selected";
   //l2.selectedIndex=n;
   //n=l2.length
;        
    } }
///////////////////////////////////////////////////////////////////////////////////////////

// on supprime l'element ajouté dans la liste2

l1.removeChild( l1.options[i]);

// on deselectionne l'element ajouté dans la liste1 1
o.selected="";
    i--;
 }
======================================

merci encore pour votre aide

samedi 1 décembre 2007 à 09:07:31 | Re : supprimer des valeurs dans un select multiple

bultez

Membre Club

c'est plus un problème d'algo que de javascript, non ?

ch'tit exemple ?

on classe en fonction de .text,
si existe déjà : on remplace,
liste1 et liste2 plusieurs lignes possibles,
mit un onchange dans liste1 pour vérifier,
   
à toi d'adapter si nécessaire

    et d'ailleurs pourquoi mettre .value et .text égaux ?
    et surtout égaux à selectedIndex+1 finalement ?
    ce doit être pour l'exemple.... j'espère

brut de fonderie... on doit pouvoir largement améliorer/simplifier ! ( doux euphémisme )
si j'ai parfaitement compris le but de la manoeuvre
pas testé réellement/totalement ! à vérifier  !


<select multiple id="liste1"
onchange="alert(this.options[this.selectedIndex].value+'/'+this.options[this.selectedIndex].text);">
    <option value="un">01</option>
    <option value="trois">03</option>
    <option value="quatre">04</option>
</select>
<select multiple id="liste2">
    <option value="zéro">00</option>
    <option value="deux">02</option>
    <option value="trois modifié">03</option>
    <option value="dix">10</option>
</select>
<script type="text/javascript">
    var l2=document.getElementById("liste2");
    var l1=document.getElementById("liste1");
    function met(ou,quoi)
    {   l1.length++;
        for ( var n3 = l1.length-1; n3>ou; n3-- )
        {   l1.options[n3].value=l1.options[n3-1].value;
            l1.options[n3].text=l1.options[n3-1].text;
        }
        l1.options[ou].value=l2.options[quoi].value;
        l1.options[ou].text=l2.options[quoi].text;
    }
    for ( var n2 = 0; n2 < l2.length; n2++ )
    {   trv=false;
        for ( var n1 = 0; n1 < l1.length; n1++ )
        {    if ( l2.options[n2].text < l1.options[n1].text )
                    {   met(n1,n2);
                        n1=l1.length;
                        trv=true;
                    }
            else     {  if ( l2.options[n2].text == l1.options[n1].text )
                        {   l1.options[n1].value = l2.options[n2].value;
                            l1.options[n1].text = l2.options[n2].text;
                            n1 = l1.length;
                            trv=true;
                        }
                    }
        }
        if (!trv) met(n1,n2);
    }
    l2.length=0;
</script>





                Cordialement            Bul         [mon Site]     [M'écrire]


Cette discussion est classée dans : supprimer, marche, alert, options, l1


Répondre à ce message

Sujets en rapport avec ce message

Recupérer le contenu de cette liste [ par voge ] Voila j'essaye d'utiliser ce petit script : Choix Mails <!--script de déplacement d'une liste a Récupérer les valeurs du script "Bascule" [ par nunor ] Bonjour, je cherche à dynamiser le script "Basculer des éléments d'une liste à l'autre" J'arrive à alimenter les deux listes par des résultats mysql. Liste déroulante [ par piep14 ] Bonjour, j'essais de faire une newsletter pour mon site ! J'ai fait une liste déroulante qui contient les adresses emails. pb avec popup [ par EksTaZia ] j'ai un formulaire pour ajouter un ouvrage, et lorqu'on clik sur auteur, un popup s'ouvre avec toutes la liste des auteurs, je veux que lorsqu'on clik Un tableau de select génére une erreur [ par arzoul ] Salut,N'étant pas expert en Js et ayant cherché pendant qq heures, je me permets de venir poser ma question aux spécialistes :PVoici mon code, il perm basculer des elements d'une liste a l'autre [ par attentio ] Bonjour,voila j'ai un script qui me permet de basculer des elements d'une liste a l'autre, ca fonctionne mais je voudrais utilser non pas le nom mais Liste double et javascript [ par daris ] Bonjour, J'ai mis en place un système liste double en m'inpirant de ce site.Mais je sollicite de l'aide car mon scripte ne fonctionne pas convenableme jquery callback qui fonctionne pas [ par ankify ] bonjour, y a t il qu'un qui puisse me dire pourquoi ce code ne fonctionne pas: c'est une copie simplifiée de 2 modules qui fonctionnent 100%. celui-c getElementById qui ne marche pas [ par chour03 ] Bonjour !pour faire simple, j'ai une page qui ressembleà ca :......alert(document.i basculer entre deux listes (débutant) [ par billy67000 ] function Deplacer(l1,l2) { if (l1.options.selectedIndex>=0) { o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selected


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales