/ / Mehrere einfache Auswahlfelder zum Ersetzen eines mehrfachen Auswahlfelds in HTML - HTML, Webformulare und HTML-Auswahl

Mehrere einfache Auswahlfelder zum Ersetzen eines Mehrfachauswahlfelds in HTML - HTML, Webforms, HTML-Auswahl

Ich möchte eine Mehrfachauswahlbox wie folgt ersetzen:

<select multiple="multiple" name="options">
<option value="option1">option1</option>
<option value="option2">option2</option>
...
</select>

mit einer beliebigen Anzahl einfacher Auswahlfelder:

<select name="options1">
<option value="option1">option1</option>
<option value="option2">option2</option>
...
</select>

<select name="options2">
<option value="option1">option1</option>
<option value="option2">option2</option>
...
</select>

Gibt es eine Möglichkeit, ein Array von Auswahlfeldern per POST zu senden und abzurufen, oder sollte ich versuchen, auf jedes Auswahlfeld namens options (number) zuzugreifen, bis es fehlschlägt? Scheint ein bisschen schmutzig.

Ich sollte in der Lage sein, eine Aktion zum Löschen dieser Auswahlbox oder zum Erstellen einer neuen Auswahlbox einzureichen.

Antworten:

1 für die Antwort № 1

Geben Sie den ausgewählten Elementen einfach denselben Namen.

HTML-Formulare haben kein Konzept von "einem Array". Jede Formularbearbeitungsbibliothek, die Eingabedatenfelder behandelt, generiert sie aus einem Namen mit mehreren Werten:

foo=bar&foo=baz&aDifferentField=fizzbuzz

Dies ist, was eine Mehrfachauswahl (benannter foo) mit zwei ausgewählten Werten generiert (wenn auch "aDifferentField" im Formular vorhanden ist).

Manchmal gibt es Vorbehalte.

Perls CGI.pm benötigt die Anforderung, dass die Daten im Listenkontext sein müssen:

my @foos = $cgi->param("foo");

PHP erfordert, dass der Name mit den Zeichen "[]" endet.

name="foo[]"
foo[]=bar&foo[]=baz&aDifferentField=fizzbuzz

… Aber es kommt alles darauf an, dass die Namen gleich sind (obwohl die IDs noch unterschiedlich sein müssen).

Wie für die Löschung:

<label for="foo5">Group 5</label>
<select name="foo" id="foo5">
<option value="delete_foo5">Delete this group</option>
<option value="1">1</option>
<option value="2">2</option>
</select>