2012-04-12 8 views
0

Ich habe Optionselemente mit Javascript dynamisch erstellt. Ich doppelklicke eine Option aus einem Auswahlfeld, um sie in ein zweites, deaktiviertes, Mehrfachauswahlfeld zu übertragen. Das funktioniert gut. Das Problem tritt auf, wenn ich das Formular mit den neuen Informationen absende. Das zweite Auswahlfeld wird nicht an PHP übergeben. Ich nehme an, dass es denkt, dass es leer ist, aber jede der Optionen, die ich hinzugefügt habe, sind standardmäßig ausgewählt und ich sehe sie alle dort visuell. Ich habe nach einer Lösung gesucht, aber ich habe wenig Glück. Alles, was ich finden kann, besagt, dass der wahrscheinlichste Fehler eine Browserinkompatibilität ist oder dass die Elemente nicht zum Formular hinzugefügt werden. Wenn es sich um ein Browser-Inkompatibilitätsproblem handelt, habe ich es in allen gängigen Browsern mit den gleichen Ergebnissen versucht, also würde ich gerne wissen, welche mir fehlt (FF, Chrome, IE). Da ich dem Formular nicht hinzugefügt werde, sehe ich nicht, wie das möglich sein könnte. Das select-Element existiert bereits in der Form und ich hänge lediglich neue Optionen darin an. Fehle ich etwas oder ist das einfach nicht möglich?Optionen hinzugefügt zu [disabled multi] Wählen Sie das Feld dynamisch werden nicht gepostet?

<script type="text/javascript" language="JavaScript"> 
function addModule(value, title) { 
    modules = document.getElementById('modules'); 
    modules.options[modules.options.length] = new Option(title, value, true); 
} 
</script> 
<form name="addModules" method="POST" action="submit.php"> 
<select name="moduleList" size="20" ondblclick="addModule(this.options[this.selectedIndex].text, this.value);"> 
<?php //dynamically created options from PHP ?> 
</select> 
<select id="modules" name="modules[]" multiple="multiple" size="20" DISABLED></select> 
<input type="submit" value="Add Modules" /> 
</form> 
+1

Ich sehe nur Optionen, die zu einem ** 'DISABLED' ** - Feld hinzugefügt wurden ... –

Antwort

2

Deaktivierte Felder werden nicht übermittelt. Die einfachste Lösung besteht darin, sie nur zu lesen. Wenn Sie festgelegt haben, dass es deaktiviert ist, können Sie ein verstecktes Feld erstellen, das mit Werten aktualisiert wird, aber ich empfehle dringend, nur readonly zu verwenden und dann zu versuchen, es wie gewünscht zu formatieren.

+0

Das war der Trick, noch nie zuvor gelesen. Gibt es eine Möglichkeit, zu verhindern, dass Optionen in diesem Feld deaktiviert werden? Als ich es deaktiviert hatte, blieben sie ausgewählt, auch wenn ich im Feld klickte, jetzt tun sie es nicht. Vielen Dank! Werde annehmen wenn ich noch auf timer warten kann ... – mseancole

+0

@Showerhead Hmmm, hätte das nicht für möglich gehalten. Ich nehme an, du könntest es mit JavaScript machen. Eine andere Möglichkeit könnte sein, einfach ein verstecktes Feld zu verwenden und mit deaktiviert zu bleiben. Ich bin jedoch überrascht, dass Readonly kann abgewählt werden. Nicht sicher, wie man das umgeht, ohne dass es hässlich wird :(. – Corbin

+0

Danke für den Vorschlag, aber ich möchte versteckte Felder vermeiden, sonst wäre ich nicht in der Lage, die Selektionen visuell zu überprüfen. Obwohl ich einen neuen Span hinzufügen und füllen könnte es mit der Liste, während ich das versteckte Feld aktualisiere ... hmmmm ... Dinge zum Nachdenken, danke nochmal :) – mseancole

0

Da die zweite Auswahl deaktiviert ist, werden die Daten nicht gesendet, wenn das Formular gesendet wird.

Sie könnten versuchen, es nur lesbar anstatt deaktiviert zu machen.

0

Dies ist das Standardverhalten des Browsers. Wenn Sie die Werte zur Liste der deaktivierten Auswahl hinzufügen, können Sie sie auch zu einem ausgeblendeten Eingabefeld hinzufügen und dann in der veröffentlichten Anforderung darauf zugreifen.