"Wert vom rechten ins linke Auswahlfeld"
Andreas Korthaus
- javascript
Hallo!
Ich hatte mir das schonmal gemacht, finde es leider nicht mehr und auch in SELFHTML finde ich so auf den ersten Blick nicht wie ich das nochmal gemacht habe. Ich habe 2 mehrzeilige Auswahlfelder, dazwischen 2 Button:
+------------+ +------------+
| << hinzufügen | a |
| | b |
| entfernen >> | c |
+------------+ +------------+
Man muß z.B. den Wert "a" markieren, und wenn man dann auf den Button "hinzufügen" klickt wird der Wert a dem linken Auswahlfeld hinzugefügt, und im rechten entfernt, bei "entfernen" umgekehrt.
Wie mache ich das nochmal(welche Funktionen...)? Wie ist das mit Mozilla-Kompatibilität?
Viele Grüße
Andreas
Hallo,
http://selfhtml.teamone.de/javascript/objekte/options.htm#elemente_loeschen
http://selfhtml.teamone.de/javascript/objekte/options.htm#neue_elemente
Das sollte erst mal helfen.
Gruß Markus
Hallo,
das auch noch:
http://selfhtml.teamone.de/javascript/objekte/options.htm#selected
Gruß Markus
Hi!
Danke Dir! Das hatte ich leider nicht gefunden ;-) Aber ein Problem gibt es mit multipler Auswahl: Wenn ich mehr als einen Wert auswähle, dann wird mind. einer verschluckt, also nicht in das andere Feld "übertragen". Ich mache das jetzt so:
function Hinzufuegen() {
for(i=0;i<document.Testform.Auswahl2.length;++i)
{
if(document.Testform.Auswahl2.options[i].selected == true)
{
NeuerEintrag = new Option(document.Testform.Auswahl2.options[i].text,document.Testform.Auswahl2.options[i].text,false,true);
document.Testform.Auswahl.options[document.Testform.Auswahl.length] = NeuerEintrag;
document.Testform.Auswahl2.options[i] = null;
}
}
}
Leider kann ich keine Datei hochladen, meine Internetverbindung spinnt, ich versuche es aber dann kannst Du es live sehen.
Grüße
Andreas
Hallo!
Noch eine Frage:
Kann man auch "nicht ausgewählte" Werte in einer Auswahlliste mit einem Submit-Button abschicken?
Wenn ich jetzt alle Werte die auswählen möchte vom rechten ins linke Auswahlfeld übertrage, mache ist das aus dem Grund, da nicht jeder mit ctrl eine Mehrfach-Auswahl treffen kann(usability). Ich will also alle Werte die Javascript in das linke Feld geschrieben hat, die womöglich nicht alle ausgewählt sind(wenn zwischenzeitlich wieder Werte entfernt wurden), dass diese alle beim Abschicken des Formulars, am besten in einem Array übertragen werden. Wie mache ich das?
Grüße
Andreas
Hallo!
Sorry wegen der vielen Postings, aber ich kann nur Beiträge unter 1 KB abschicken(daher kome ich untzen auch nicht zum Antworten, habe 3 Antworten hier stehen aber kann sie nicht abschicken :-( Ich glaube mein Provider ist Schuld)
Hab noch ein Problem: alle Werte haben den gleichen Namen, d.h. ich bekomme einen Request-String wie:
?Auswahl=Goethe&Auswahl=Guildo+Horn&Auswahl=Fontane
Aber leider überschreibt der letzte Wert alle vorherigen, wie komme ich an die? Muß ich das Auswahlfeld als Array definieren, also name="Auswahl[]", nur Javascript akzeptiert Auswahl[] nicht als Feldnamen :-( Wie kann ich das lösen?
Viele Grüße
Andreas
Hallo Andreas,
Hab noch ein Problem: alle Werte haben den gleichen Namen, d.h. ich bekomme einen Request-String wie:
?Auswahl=Goethe&Auswahl=Guildo+Horn&Auswahl=Fontane
Aber leider überschreibt der letzte Wert alle vorherigen, wie komme ich an die? Muß ich das Auswahlfeld als Array definieren, also name="Auswahl[]", nur Javascript akzeptiert Auswahl[] nicht als Feldnamen :-( Wie kann ich das lösen?
Du könntest auch einen Index anhängen, so in etwa: auswahl1 auswahl2
dann musst DU kein array machen und kannst ähnlich komfortabel den "richtigen" auslesen.
ciao
romy
Hi!
Du könntest auch einen Index anhängen, so in etwa: auswahl1 auswahl2
dann musst DU kein array machen und kannst ähnlich komfortabel den "richtigen" auslesen.
Und wie mache ich das? Kann ich in Javascript nicht auf ein Formular-Feld mit dem Namen select[] zugreifen? Ich habe es versucht aber schaffe es nicht.
denn wenn ich das Formularfeld so nenne, lautet der Request-String:
?select%5B%5D=asdasd&select%5B%5D=asdasd&select%5B%5D=asdasdasda
Zumindest könnte ich ja auch das anghängen und hätte dann direkt den Array. Aber wie mache ich das? Wie kann ich den Request-String beeinflussen? In diesem Fall würde es ja reichen an jeden Namen noch %5B%5D anzuhängen. wäre auf alle Fälle sauberer.
Grüße
Andreas
In diesem Fall würde es ja reichen an jeden Namen noch %5B%5D anzuhängen. wäre auf alle Fälle sauberer.
Du hast doch ein select-dings
<select>
<option name="auswahl"></option>
<option name="auswahl"></option>
<option name="auswahl"></option>
</select>
oder ?
wer hindert dich daran zu schreiben
name="auswahl1"
name="auswahl2" usw.
ob es auch geht zu schreiben:
name="auswahl%5B%5D"
weiss ich nicht, einen Versuch ist es wert.
dort wo es ankommt, kannst Du mit Stringoperationen auslesen, ob es sich um Auswahl1 oder 2 oder 3 handelt
kann es sein, dass ich die Problematik unterschätze? Ich bin mir nicht gnaz sicher, dass ich genau vertsehe was Dein Problem ist , sorry.
Wie man den Requeststring verändert weiss ich auch nicht. Ausser es steht Dir eine Serverseitige Scriptsprache zur Verfügung.
ciao
romy
Hallo!
Du hast doch ein select-dings
<select>
<option name="auswahl"></option>
<option name="auswahl"></option>
<option name="auswahl"></option>
</select>
oder ?
eben nicht. Ich habe(und anders geht es IMHO nicht):
<select name="auswahl">
<option>a</option>
<option>b</option>
<option>c</option>
</select>
die Variante um das z.B. mir PHP weiterverarbeiten zu können wäre:
<select name="auswahl[]">
<option>a</option>
<option>b</option>
<option>c</option>
</select>
mit den von mir beschreibenen Konsequenzen. Nur Leider kann ich dann ein Element mit dem Namen "auswahl[]" nicht mehr ansprechen. Habe zumindest keine Ahnung wie.
wer hindert dich daran zu schreiben
name="auswahl1"
name="auswahl2" usw.
Vermutlich irgendeine HTML Spezifikation ;-)
ob es auch geht zu schreiben:
name="auswahl%5B%5D"
weiss ich nicht, einen Versuch ist es wert.
wie gesagt generiert das der Browser wenn ich den Namen "auswahl[]" verwende. Aber wie gesagt kann ich das nicht mit Javascript verändern!
dort wo es ankommt, kannst Du mit Stringoperationen auslesen, ob es sich um Auswahl1 oder 2 oder 3 handelt
das ist sicher kein Problem, aber mein Problem muß IMHO ium Browser und vermutlich mit Javascript gelöst werden, denn das Problem bei der Mehrfachauswahl ist es, das ich entweder bei einem nicht-Array-namen pro gewählter Option einen Parameter mit demselben Namen erhalte(oder kommt man da in PHP doch irgendwie dran? Denn es wird ja zum Server geschickt!), und wenn ich einen Array-Namen verwende kann ich mit Javascript erst gar keine Werte in das Feld schreiben, so dass es mir auch nichts bringt.
kann es sein, dass ich die Problematik unterschätze? Ich bin mir nicht gnaz sicher, dass ich genau vertsehe was Dein Problem ist , sorry.
Ich habe es gerade doch mal wieder geschafft die 2K große Datei hochzuladen(vielen Dank an dieser Stelle an meinen Provider für diese großzügige Geste!): http://knet-systems.de/temp/hinzu.html
So funkitoniert das hin- und herschieben mehr oder weniger, wie gesagt wird bei mehrfachauswahl nicht _alles_ was ausgewählt wurde übertragen, vielleicht weiß ja einer von Euch warum. Beim Abschicken kann man auch den Request-String sehen.
Wenn ich jetzt wie gesagt den Namen des Auswahlfeldes auf "auswahl[]" ändere, das entsprechend so ins Javascript schreibe, also statt:
document.Testform.Auswahl.options[document.Testform.Auswahl.length] = NeuerEintrag;
einfach:
document.Testform.Auswahl[].options[document.Testform.Auswahl[].length] = NeuerEintrag;
Gibt es eine Möglichkeit das doch irgendwie hinzubekommen?
Wie man den Requeststring verändert weiss ich auch nicht. Ausser es steht Dir eine Serverseitige Scriptsprache zur Verfügung.
Es geht aber um den Request-String des Browsers :-(
Grüße
Andreas
Hallo!
Möchte das Problem mal aufs Wesentliche reduzieren, da es mich ausnahmsweise einigermaßen dingend [sorry :-( ] interessiert ob das generell auf diese Weise möglich ist oder nicht, ein "nein" wäre mir aufgrund der Dringlichkeit sehr viel Wert, da ich dann Zeit für die Suche nach einer Alternative nutzen könnte, aber leider kenne ich keinen so "schönen" Weg wie diesen. Und ich meine das auch schonmal so oder so ähnlich irgendwo gesehen zu haben! Was bringt mit z.B. folgedes Beispiel aus SELFHTML: http://selfhtml.teamone.de/javascript/objekte/options.htm#neue_elemente, wenn ich die so eingetragenen Daten nicht an den Server übertragen kann? Formulare auf dem Browser alleine bringen meist nicht viel! Also _muss_ das doch irgendwie gehen! Oder kennt jemand ein Beispiel wo sowas ähnliches funktioniert?
Wenn man mal folgende Datei ausprobiert:
<html><body>
<h1>Pizzeria Fantasia</h1>
<form action="select.htm">
<select name="Pizza" size="3"
onchange="alert(this.form.Pizza.options[this.form.Pizza.selectedIndex].text)">
<option>Pizza Napoli</option>
<option>Pizza Funghi</option>
<option>Pizza Tonno</option>
</select>
</form>
</body></html>
das funktioniert sehr gut.
<html><body>
<h1>Pizzeria Fantasia</h1>
<form action="select.htm">
<select name="Pizza[]" size="3"
onchange="alert(this.form.Pizza[].options[this.form.Pizza[].selectedIndex].text)">
<option>Pizza Napoli</option>
<option>Pizza Funghi</option>
<option>Pizza Tonno</option>
</select>
</form>
</body></html>
so habe ich es z.B. versucht, ziemlich klar das das nicht so gehen kann, aber wie sonst? Habe auch Pizza[] und Pizza%5B%5D... bringt nichts. Oder muß ich serverseitig auf eine andere Programmiersprache umsteigen, denn meines Wissens hat PERL z.B. Zugriff auf den kompletten Request-String. Nur will ich das wenn nur irgend möglich vermeiden, denn in demselben Formular befinden sich bereits 3 Upload-Felder etc., serverseitig ist das im Prinzip schon fertig, wenn ich das alles in PERL programmieren müßte würde das vermutlich sehr lange dauern(PERL-Anfänger).
Kann ich es irgendwie anders schaffen die ausgewählten Werte so in den Request-String zu schreiben, das PHP damit was anfangen kann?
Vielen Dank!
Grüße
Andreas
... das dauert immer so lange und solche Sachen gehen in PHP doch sooooo viel schöner ;-)
Sachdienliche Hinweise die zur Vermeidung von PERL führen bitte in diesem Thread posten *g*
Grüße
Andreas
Hallo Andreas,
... das dauert immer so lange und solche Sachen gehen in PHP
doch sooooo viel schöner ;-)
Ganz im Gegenteil.
Sachdienliche Hinweise die zur Vermeidung von PERL führen
bitte in diesem Thread posten *g*
$qs = getenv("QUERY_STRING");
Gruesse,
CK
Hi Christian!
... das dauert immer so lange und solche Sachen gehen in PHP
doch sooooo viel schöner ;-)Ganz im Gegenteil.
Kommt drauf an, das ich in PHP nicht an den original POST-Request komme hat fast dazu geführt das ich wild auf meine armen PC einschlage, aber vor allem Sessions und Datei-Upload ist IMHO in PHP ganz praktisch gelöst. Aber ich kenne PERL gut genug um zu wissen das ich das besser nicht gesagt hätte ;-)
Sachdienliche Hinweise die zur Vermeidung von PERL führen
bitte in diesem Thread posten *g*
$qs = getenv("QUERY_STRING");
Leider brauche ich wegen des Datei-Uploads POST! Und dann ist der lustige "Query-String" leer.
Hat sich ja aber bereits erledigt!
Grüße
Andreas