Selectfeld mit multiple und Javascript.
Chrisi
- javascript
Hallo zusammen,
ich habe mir 2 Selectfelder erstellt in denen ich vom einem zum anderen Feld die möglichen Option übertragen kann ...
Beispiel:
<select name="optionen">
<option value=1>eins</option>
<option value=2>zwei</option>
</select>
<select name="auswahl">
</select>
Ich wähle dann in "optionen" einen Eintrag und onclick rufe ich eine Javascript Funktion auf die mir die Auswahl in "auswahl" überträgt.
Hier meine Javascript Funktion:
function add () {
for (i = 0; i < document.test.options.length; ++i){
if (document.test.options.options[i].selected == true){
document.test.auswahl.options[document.test.auswahl.options.length] = new Option(document.test.options.options[i].value, document.test.options.options[i].value, false, true);
document.test.options.options[i] = null;
document.test.options.value = "";
document.test.auswahl.value = "";
}
}
}
Soweit ist alles Prima und Funktioniert auch, aber ich möchte gern mehr als eine Option aufeinmal übertragen.
Dazu habe ich mit "multiple" gearbeitet dadurch kann ich dann auf der Tastatur mit CTRL mehr als eine Option selectieren, aber leider kommt dann im Auswahl Formular nurnoch unvollständiges an, mal fehlt die erste Selectierung mal eine aus der Mitte ich kann das leider nicht ganz nachvollziehen.
Weis vieleicht jemand von euch woran es liegen kann ? BZW. geht das was ich vorhabe überhaupt ?
Danke für jeden Tipp, Chrisi ...
Gleich noch was hinterher :)
http://de.selfhtml.org/javascript/objekte/options.htm#neue_elemente
Mir ist da nochwas aufegefallen, in meinem Beispiel füge ich ja die neuen Optionfelder hinzu, so wie oben beschrieben, ich setze auch den Wert fürs selectieren auf true und das select darf multiple was er optisch alles richtig macht.
Leider kommt aber nach dem Absenden des Formulares immer nur der zuletzt eingefügte Optionwert als selectiert mit, bzw. wird überhaupt mitgesendet. Ich möchte aber gerne alle Optionen die in der neuen Auswahlbox zugeordnet wurden beim absenden übergeben.
Vieleicht weis ja jemand Rat ?
Danke, Chrisi ...
hi,
Leider kommt aber nach dem Absenden des Formulares immer nur der zuletzt eingefügte Optionwert als selectiert mit, bzw. wird überhaupt mitgesendet.
wie und wo hast du das festgestellt?
wenn es sich um die verarbeitung der daten in PHP handeln sollte, lies http://php-faq.de/q/q-formular-select-multiple.html.
gruß,
wahsaga
hi,
Dazu habe ich mit "multiple" gearbeitet dadurch kann ich dann auf der Tastatur mit CTRL mehr als eine Option selectieren, aber leider kommt dann im Auswahl Formular nurnoch unvollständiges an, mal fehlt die erste Selectierung mal eine aus der Mitte ich kann das leider nicht ganz nachvollziehen.
Weis vieleicht jemand von euch woran es liegen kann ?
an einer denkbar ungünstigen abbruchbedingung für deine schleife.
for (i = 0; i < document.test.options.length; ++i){
du löschst in dieser schleife optionen aus dem select. (btw: dieses ebenfalls "options" zu nennen, wäre denkbar ungünstig. allerdings frage ich mich, warum du es in JS überhaupt so ansprichst - in deinem HTML-code hieß es doch "optionen" ...?)
anschließend geht's in den nächsten schleifendurchlauf - aber hoppla, was ist das?
document.test.options.length hat jetzt ja einen ganz anderen wert - weil du eben eine dieser optionen entfernt hast.
also kannst du jetzt wohl kaum erwarten, dass immer noch _alle_ optionen des ursprünglichen feldes ordnungsgemäß durchlaufen werden.
gruß,
wahsaga
Hi,
also kannst du jetzt wohl kaum erwarten, dass immer noch _alle_ optionen des ursprünglichen feldes ordnungsgemäß durchlaufen werden.
So soll es ja auch sein :) Die Option die im linken Select gewählt wurde muss ins rechte übertragen werden und aus dem linken gelöscht werden, genau das tut die Funktion.
Meine Fehler mit der Nutzung vom multiple stammen von der falsch gewählten Variable, bzw. Variablen. Ich hatte in den Selectfeldern keinen Array "var[]" festgelgt, dadurch hat er mir immer nur den letzten Wert übergeben, nun klappt es gut.
Viele Grüße, Chrisi ...