Elemente UND value in Auswahlliste einfügen
Frithjof Gnas
- javascript
0 Stefan Muenz0 Frithjof Gnas0 Stefan Muenz0 Struppi
0 Axel Richter
Hi alle!
Ich will für eine Liste von URLs, die dann per POST übergeben werden ein Füllen wie unter http://de.selfhtml.org/javascript/objekte/options.htm#neue\_elemente beschreiben umsetzen.
Dummerweise sehe ich, wenn ich das Formular abschicke bloß den letzten übergebenen Wert aus dem Select-Feld.
Wie baue ich das Script denn jetzt so um, dass ich die Werte als Array zurückbekomme, am besten mit fortlaufenden Index als Option-Value?
Schubs und/oder Lösung gerne gesehen. ;)
Grüße, Frithjof.
Hallo Frithjof,
Dummerweise sehe ich, wenn ich das Formular abschicke bloß den letzten übergebenen Wert aus dem Select-Feld.
Mit GET oder POST bekommst du denjenigen Wert, der selektiert wurde. Deshalb ist es ja auch eine select-Liste. Du kannst den User anweisen, alle Eintraege vor Absenden zu selektieren (<select ... multiple> nicht vergessen!). Wenn du es automatisieren willst, kannst du z.B. in <input type="hidden"> definieren, dessen value du bei jedem neuen Eintrag, den du als neue Option in die select-Liste einfuegst, zusaetzlich um den neuen Option-Wert erweiterst ... hiddenfeld.value += ";"+ebenEingegebenerWert (wobei das ; hier einfach als Trennerzeichen verwendet wird, damit man den value des hidden-Feldes spaeter wieder "explodieren" kann).
viele Gruesse
Stefan Muenz
Hi Stefan (schön Dich persönlich zu lesen! ;-P),
Dummerweise sehe ich, wenn ich das Formular abschicke bloß den letzten übergebenen Wert aus dem Select-Feld.
Mit GET oder POST bekommst du denjenigen Wert, der selektiert wurde. Deshalb ist es ja auch eine select-Liste.
Das ist mir schon klar, ich hab das Script ja auch dahingehend geändert, dass jeder hinzugefügte Eintrag automatisch selektiert wird, also alle Einträge vorm abschicken selektiert sind.
Ich habe allerdings an anderer Stelle ein Select-Feld, wähle mehrere Werte aus und bekomme diese im Array, als Namen verwende ich dann halt "name[]", da verschluckt sich das Bespielscript halt an den Klammern. Das trifft glaub ich eher mein Problem...
[hidden-Feld]
Das ist generell auch 'ne gute Idee, bloß kann man dann ja nichts so schön rauslöschen wie bei ner Select-Box...
Grüße,
Frithjof.
Hallo Frithjof,
Ich habe allerdings an anderer Stelle ein Select-Feld, wähle mehrere Werte aus und bekomme diese im Array, als Namen verwende ich dann halt "name[]", da verschluckt sich das Bespielscript halt an den Klammern. Das trifft glaub ich eher mein Problem...
Tja, da besteht in der Tat ein Abstimmungsproblem zwischen HTML, JavaScript und PHP. Letzteres will die []-Syntax, um den gewuenschten Array zu bekommen; HTML ist alles relativ Wurscht (CDATA), und JavaScript mag nur JavaScript-kompatible Namenskonventionen.
Du kannst allerdings das name-Attribut mit JavaScript aendern. D.h. du koenntest es in HTML PHP-gerecht definieren, z.B. name="bla[]". In JavaScript kannst du es dann fuer den Zeitraum der Bearbeitung (document.onLoad und form.onSubmit) umbenennen mit document.Formular.Selectfeld.name = "bla".
viele Gruesse
Stefan Muenz
Du kannst allerdings das name-Attribut mit JavaScript aendern. D.h. du koenntest es in HTML PHP-gerecht definieren, z.B. name="bla[]". In JavaScript kannst du es dann fuer den Zeitraum der Bearbeitung (document.onLoad und form.onSubmit) umbenennen mit document.Formular.Selectfeld.name = "bla".
Naja, oder mit document.Formular.Selectfeld['bla[]'] ansprechen.
Struppi.
Hallo,
Ich habe allerdings an anderer Stelle ein Select-Feld, wähle mehrere Werte aus und bekomme diese im Array, als Namen verwende ich dann halt "name[]", da verschluckt sich das Bespielscript halt an den Klammern. Das trifft glaub ich eher mein Problem...
Das muss nicht sein. JavaScript kommt durchaus mit Klammern in der Elementbezeichnung klar. Man muss sie nur richtig ansprechen.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Titel</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
<!--
function showselects() {
mySelect = document.forms["myForm"].elements["name[]"]
for (var i = 0; i < mySelect.options.length; i++) {
alert(mySelect.options[i].value + "|" + mySelect.options[i].selected);
}
}
//-->
</script>
<noscript></noscript>
</head>
<body>
<form name="myForm" action="#" method="GET" onsubmit="showselects();">
<p>
<select name="name[]" size="5" multiple="multiple">
<option value="01">Option01</option>
<option value="02">Option02</option>
<option value="03">Option03</option>
<option value="04">Option04</option>
<option value="05">Option05</option>
</select>
<input type="Submit" name="OK" value="OK">
</p>
</form>
</body>
</html>
viele Grüße
Axel