Ergebnis 1 bis 3 von 3
  1. #1
    frodod ist offline Grünschnabel
    registriert
    15-06-2015
    Beiträge
    1

    Dyn. Combobox mit Arrays

    Ich habe zwei dynamische Dropboxen ... und das funktioniert auch so wie es soll:

    HTML-Code:
    <head>
    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    
    function Type(id, type){
    this.id = id;
    this.type = type;
    }
    function Style(id, id_type, style){
    this.id = id;
    this.id_type = id_type;
    this.style = style;
    }
    TypeArray = new Array(
    new Type(1, "HAUPTGRUPPE A"),
    new Type(2, "HAUPTGRUPPE B"),
    ...
    
    new Style(1, 1, "1.UNTERGRUPPE A"),
    new Style(2, 1, "2.UNTERGRUPPE A"),
    ...
    
    new Style(21, 2, "1.UNTERGRUPPE B"),
    new Style(22, 2, "2.UNTERGRUPPE B")
    ...
    );
    
    
    function init(sel_type, sel_style){
    document.product.id_type.options[0]	= new Option("HAUPTGRUPPE");
    document.product.id_style.options[0] = new Option("UNTERGRUPPE");
    for(i = 1; i <= TypeArray.length; i++){
    document.product.id_type.options[i]	= new Option(TypeArray[i-1].type, TypeArray[i-1].id);
    if(TypeArray[i-1].id == sel_type)
    document.product.id_type.options[i].selected = true;
    }
    OnChange(sel_style);
    }
    function OnChange(sel_style){
    sel_type_index = document.product.id_type.selectedIndex;
    sel_type_value = parseInt(document.product.id_type[sel_type_index].value);
    for(i = document.product.id_style.length - 1; i > 0; i--)
    document.product.id_style.options[i] = null;
    j=1;
    for(i = 1; i <= StyleArray.length; i++){
    if(StyleArray[i-1].id_type == sel_type_value){
    document.product.id_style.options[j] = new Option(StyleArray[i-1].style, StyleArray[i-1].id);
    if(StyleArray[i-1].id == sel_style)	document.product.id_style.options[j].selected = true;
    j++;
    }
    }
    }
    
    </script>
    </head>
    Die Auswahl erfolgt in einer Standard-form:

    HTML-Code:
    <body>
    
    <form name="product" method="post" action="xy.php">
    
    <select name="id_type" size="1" onChange="OnChange()"></select>
    
    <select name="id_style" size="1"></select>
    
    <input type="text" name="auswahl" value="">*
    
    </form>
    
    
    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    init();
    </SCRIPT>
    
    </body>
    Nun brauche ich aber den tatsächlichen, gleich "selected" value aus der select id_style, erhalte aber, wie ich es auch anstelle, nur die id des arrays ... oben habe ich, nur zu Testzwecken dafür die input type=text" rein gesetzt.
    Alle Versuche wie ]document.forms.auswahl.value=... schlagen fehl. Die Weiterverarbeitung dieses id_style.values soll per PHP erfolgen. Wie krieg ich den gewählten (selected) Wert der UNTERGRUPPE und nicht nur die array-id raus?
    Geändert von kkapsner (16-06-2015 um 10:23 Uhr) Grund: andere code tags - anderes Präfix

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.678

    AW: Dyn. Combobox mit Arrays

    Zitat Zitat von frodod Beitrag anzeigen
    Nun brauche ich aber den tatsächlichen, gleich "selected" value aus der select id_style, erhalte aber, wie ich es auch anstelle, nur die id des arrays ... oben habe ich, nur zu Testzwecken dafür die input type=text" rein gesetzt.
    Ich weiß nicht, wie's den anderen geht, aber ich verstehe diesen Satz nicht... was meinst du mit "die id des arrays"?

    Außerdem solltest du deinen Code mal sauber formatieren - macht das Lesen/Verstehen/Warten viel einfacher.

    PS: das language-Attribut ist veraltet -> weg damit.
    PPS: anstatt des Array-Konstruktors sollte man besser die Literalschreibweise verwenden: ist kürzer und konsistent.
    PPPS: globale Variablen sind keine gute Idee.

  3. #3
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.631

    AW: Dyn. Combobox mit Arrays

    Hab das mal durch den Beautifier laufen lassen:

    HTML-Code:
    <head>
        <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
            function Type(id, type) {
                this.id = id;
                this.type = type;
            }
    
            function Style(id, id_type, style) {
                this.id = id;
                this.id_type = id_type;
                this.style = style;
            }
            TypeArray = new Array(
                new Type(1, "HAUPTGRUPPE A"),
                new Type(2, "HAUPTGRUPPE B"),
                ...
    
                new Style(1, 1, "1.UNTERGRUPPE A"),
                new Style(2, 1, "2.UNTERGRUPPE A"),
                ...
    
                new Style(21, 2, "1.UNTERGRUPPE B"),
                new Style(22, 2, "2.UNTERGRUPPE B")
                ...
            );
    
    
            function init(sel_type, sel_style) {
                document.product.id_type.options[0] = new Option("HAUPTGRUPPE");
                document.product.id_style.options[0] = new Option("UNTERGRUPPE");
                for (i = 1; i <= TypeArray.length; i++) {
                    document.product.id_type.options[i] = new Option(TypeArray[i - 1].type, TypeArray[i - 1].id);
                    if (TypeArray[i - 1].id == sel_type)
                        document.product.id_type.options[i].selected = true;
                }
                OnChange(sel_style);
            }
    
            function OnChange(sel_style) {
                sel_type_index = document.product.id_type.selectedIndex;
                sel_type_value = parseInt(document.product.id_type[sel_type_index].value);
                for (i = document.product.id_style.length - 1; i > 0; i--)
                    document.product.id_style.options[i] = null;
                j = 1;
                for (i = 1; i <= StyleArray.length; i++) {
                    if (StyleArray[i - 1].id_type == sel_type_value) {
                        document.product.id_style.options[j] = new Option(StyleArray[i - 1].style, StyleArray[i - 1].id);
                        if (StyleArray[i - 1].id == sel_style) document.product.id_style.options[j].selected = true;
                        j++;
                    }
                }
            }
        </script>
    </head>
    Ist für meine Augen trotzdem noch etwas verknotet der Code.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

Ähnliche Themen

  1. Combobox aktualisiert nicht
    Von fabsen1005 im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 06-01-2011, 15:38
  2. Combobox hilfe
    Von DIGIMan im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 14-04-2007, 10:49
  3. Arrays über Arrays abfragen
    Von daRokk im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 14-12-2004, 19:51
  4. Popup vor Combobox?
    Von Suargun im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 05-11-2003, 12:10
  5. Abhängige ComboBox aus SQL
    Von adelineas im Forum Serverseitige Programmierung
    Antworten: 0
    Letzter Beitrag: 23-03-2001, 02:30

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •