Mehrfachauswahlliste in ein hidden array kopieren
skillloser
- javascript
Moin,
ich möchte, wie bereits im Titel erwähnt, die selektierten Werte einer Mehrfachauswahlliste in eine versteckte Variable kopieren, die ein Array sein muss. Allerdings weiss ich nicht wirklich wie das in Javascript funktioniert, da ich mit Javascript sehr wenig Erfahrung habe.
function setInvis() {
for (var i=0; i < document.treform.prod.length; ++i) {
if (document.treform.prod.options[i].selected) {
document.treform.act.push(document.treform.prod.options[i].value);
}
}
}
...
<INPUT TYPE="HIDDEN" NAME="act[]" VALUE="select">
<SELECT multiple="multiple" name="prod" size="3" onChange="setInvis()">
<OPTION value="multiportkarten">multiportcards</OPTION>
<OPTION value="ethernet_komponenten">Ethernet components</OPTION>
<OPTION value="ethernet_netzwerkkarten">Ethernet networkcards</OPTION>
</SELECT>
Kleine Info zum Sinn:
Der Code hier ist nur ein Bsp.. In meinem richtigen Proc befinden sich die Hidden-Var und die Auswahlliste in zwei verschiedenen Formularen, der Grund hierfür ist folgender: in Form1(mit der Hidden-Var) wird ein Wert ausgewählt. Abhängig von diesem Wert wird das Script(PHP) neu geladen und Form2(mit der Mehrfachauswahlliste) ändert sich. Allerdings sollen die bei Form2 bereits ausgewählten Werte erhalten bleiben, wenn der Wert in Form1 geändert wird.
So ich hoffe, dass hat jetzt irgendwer verstanden und kann mir weiterhelfen.
mfg
skillloser
Hallo!
function setInvis() {
for (var i=0; i < document.treform.prod.length; ++i) {
if (document.treform.prod.options[i].selected) {
document.treform.act.push(document.treform.prod.options[i].value);
}
}
}
function setInvis()
{
var auswahl = new Array();
var a = 0;
for (var i=0; i < document.treform.prod.length; i++)
{
if (document.treform.prod.options[i].selected)
{
auswahl[a] = document.treform.prod.options[i].value;
a++;
}
}
if(auswahl.length>0)
{
var arc_hidden = auswahl.join(";");
document.formularXYZ.arc_hidden.value = arc_hidden;
}
}
Wenn die Auswahl "multiportkarten" und "ethernet_netzwerkkarten" ist, sollte im Hidden-Feld der String "multiportcards;ethernet_netzwerkkarten" stehen. Du kannst nun mit PHP die Variable "act_hidden" in Empfang nehmen und den String bei dem Semikolon trennen. Die werte stehen Dir dann in einem Array zur Verfügung.
explode(): http://de2.php.net/explode/
<INPUT TYPE="HIDDEN" NAME="act_hidden" VALUE="">
Das ist eine sehr rudimentäre Lösung.
Du könntest auch für jeden ausgewählten Wert ein neues Hidden-Feld mit dem node-Objekt kreieren, ist aber meiner Meinung nach Schwachsinn.
MfG, André Laugks