SELECT multiple Inhalte an zweite SELECT multiple

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SELECT multiple Inhalte an zweite SELECT multiple

    Hi,

    bin grad dabei von einem <select multiple> in ein zweites <select multiple> einträge zu transferieren. Typische Sache denk ich.

    Nun hab ich aber ein Problem - wenn ich mehrere Einträge markiere um sie zu übertragen werden niemals alle in die zweite selectbox übernommen.

    Ich hab das Problem auch mtwl lokalisert. Meine for-Schleife läuft nicht bis zum Ende, da sich die eigenschacht selectbox.options.length ja ändert, wenn ich den Eintrag den ich in die zweite Box übertragen habe aus der ersten wieder raus nehme.

    Hier mal meine Funktion:
    PHP-Code:
    function move_user(from_idto_id){

        var 
    from document.getElementById(from_id);
        var 
    to document.getElementById(to_id);
        
        
        for(
    0from.options.lengthi++){
            if(
    from.options[i].selected){
                var 
    new_option = new Option(from.options[i].textfrom.options[i].valuefalsefalse)
                
    to.options[to.options.length] = new_option;
                
                
    from.options[i] = null;
            }
        }


    Da in der Option des Selects auch eine ID gespeichert wird, könnte ich ja einfach nach dem hinzufügen durch die Quell-Selectbox rocken und die entsprechenden Elemente löschen.

    Mich würde aber interessieren, ob es eine besser Möglichkeit gibt. Any hints?

  • #2
    Hab das jetzt schonmal umgesetzt - wenn einer von euch ne Idee hat, wie es eleganter geht möge er sie bitte Kund tun

    PHP-Code:
    function move_user(from_idto_id){

        var 
    from document.getElementById(from_id);
        var 
    to document.getElementById(to_id);
        
        var 
    from_delete = new Array();
        
        for(
    0from.options.lengthi++){
            if(
    from.options[i].selected){
                var 
    new_option = new Option(from.options[i].textfrom.options[i].valuefalsefalse)
                
    to.options[to.options.length] = new_option;
                
                
    from_delete[from_delete.length] = i;
            }
        }
        
        for(
    from_delete.lengthi--){
            
    from.options[i] = null;
        }


    Zuletzt geändert von prego; 16.02.2007, 16:53.

    Kommentar


    • #3
      Re: SELECT multiple Inhalte an zweite SELECT multiple

      Es muss ja nicht immer for sein, while bietet sich vielleicht eher an - in Kombination mit .nextSibling o.ä.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Stimmt - da hast du recht. Ich brauch ja nur die entsprechende Option auf "null" zu setzen. Ob ich da nun per options[i] oder über ne Objektreferenz dran komme is ja wurscht.

        Ich probier mal - danke.

        Kommentar


        • #5
          PHP-Code:
          function move_user(from_idto_id){

              var 
          from document.getElementById(from_id);
              var 
          to document.getElementById(to_id);
                  
              var 
          my_option from.options[0];
              do {
                  if(
          my_option.selected){
                      
                      var 
          new_option = new Option(my_option.textmy_option.valuefalsefalse)
                      
          to.options[to.options.length] = new_option;
                      
                      
          my_option null;
                  }
              } while(
          my_option my_option.nextSibling);



          ich glaub ich denk zu kompliziert - wenn ich jetzt innerhalb der do-while mein element entferne (auf null setze) kann ich ja newxSibling nicht mehr erreichen, weil es my_option ja nicht gibt...

          Hat jemand nen Schubs in die richtige Richtung für mich?

          Kommentar


          • #6
            Original geschrieben von prego
            wenn ich jetzt innerhalb der do-while mein element entferne (auf null setze) kann ich ja newxSibling nicht mehr erreichen, weil es my_option ja nicht gibt...
            Dann merk's dir, bevor du es killst.

            Code:
            var my_option = form.options[0];
            while(my_option) {
              next_option = my_option.nextSibling;
              if(my_option.selected){
                // ...
                my_option = null;
              }
              my_option = next_option;
            }
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              PHP-Code:
              function move_user(from_idto_id){

                  var 
              from document.getElementById(from_id);
                  var 
              to document.getElementById(to_id);
                  
                  var 
              next_option;
                  var 
              my_option from.options[0];
                  while(
              my_option){
                      
              next_option my_option.nextSibling;
                      if(
              my_option.selected){
                          
                          var 
              new_option = new Option(my_option.textmy_option.valuefalsefalse)
                          
              to.options[to.options.length] = new_option;
                          
                          
              from.removeChild(my_option);
                      }
                      
              my_option next_option;
                  }



              thnx wahsaga - hab jetzt removeChild() genommen, weil my_option = null aus irgend nem unerfindlichen Grund nicht funktioniert hat...

              Kommentar

              Lädt...
              X