• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Select Multiple Auswerten

Former

Neues Mitglied
Hallo

Ich habe einen Apache Server mit Tomcat und einigen anderen Dingen, von denen ich im Detail keine Ahnung habe :)
Ich kann auf dem Server Seiten erstellen.
Der Code der Seiten kann munter zwischen HTML und einem Wiki-Code gemischt werden.
Für aktive Elemente Serverseitig steht Apache Velocity in einer älteren Version zur Verfügung.

Ich will dem Anwender eine Möglichkeit geben, Elemente einer XML-Datei umzusortieren.
Was schon funktioniert ist, über Apache Velocity:
  • xml Datei öffnen und parsen
  • die relevanten Elemente in einem Array zusammenzufassen

Meine Idee war nun, die Elemente als <option> in einem <select> auszugeben.
Per Javascript kann man die Reihenfolge der <option> Einträge zu ändern.
Nach dem der Anwender auf submit gedrückt hat, will ich die Daten in Apache Velocity umsortieren.

Das Problem ist aber, dass beim Submit immer nur ein Element übertragen wird und zwar das, was zufällig selektiert wird.
Ich habe daher den Submit-Knopf mit Javascript erweitert, so dass vorher alle Elemente ausgewählt werden:
Code:
<script type="text/javascript">
function selectAll(id) { 
 var selectBox = document.getElementById(id);
 selectBox.multiple = true; 
 for (var i=0; i<selectBox.options.length; i++) { 
  selectBox.options.item(i).selected = true; 
 }
</script>

<select id="testcases" name="testcases" size="20" multiple="multiple">
#foreach ($testCase in $foundTestCases)
 <option id="${testCase.get(0)}" value="${testCase.get(0)}">${testCase.get(1)} (${testCase.get(2)})</option>
#end
</select>
<input type="submit" name="save" value="Save" onclick="selectAll('testcases')">

Im Browser sieht man auch, dass alles ausgewählt wird. Zum testen habe ich von POST auf GET umgestellt.
In der URL steht am Schluss leider nur folgendes: ?testcases=0&save=Save

Was muss ich ändern, damit GET bzw. POST alle selektierten Werte übergibt?

Vielen Dank!
 
Werbung:
halt mal strg gedrückt und klicke dann die Auswahl an. Dann kann man auch mehr aussuchen und die werden gesendet
Bei mir sieht das
HTML:
<form>
<select id="testcases" name="testcases" size="20" multiple="multiple">
<option>hallo</option>
<option>du</option>
<option>da</option>
</select>
<input type="submit" name="save" value="Save" onclick="selectAll('testcases')">
</form>

so als Link aus
versuch.php?testcases=hallo&testcases=du&testcases=da&save=Save

ohne strg drücken , und durch mehrfach anklicken markieren geht mit Javascript auch so http://jsfiddle.net/51p7ocLw/
 
Zuletzt bearbeitet:
Werbung:
Wie Du siehst, ist ein select-Element eine schlechte Wahl für das, was Du da vor hast. Verwende statt dessen input-Elemente, die werden zuverlässig alle an den Server übertragen und sollten sich mit einem geeigneten Skript genau so umsortieren lassen. Oder eine beliebige Listenstruktur in HTML, die könntest Du dann in ein JSON-Array umwandeln und mit Ajax an den Server übertragen.

Danke für den Tip. DAs Problem ist dann, auf der Serverseite die Sachen wieder richtig einzusammeln. Ich habe dafür nur eine $request Variable. Damit kann ich nicht mehr die Reihenfolge der Elemente rekonstruieren.

Ich habe jetzt ein einzelnes hidden input Feld verwendet, dessen Inhalt synchron zum select umsortiert wird.
Ist zwar nicht elegant aber einfach.

Vielen Dank für eure Hilfe!
 
Zurück
Oben