Veröffentlichen Sie Werte aus einer Mehrfachauswahl

70

Wie kann ich Werte aus einer Mehrfachauswahl in einem Formular veröffentlichen? Wenn ich auf Senden drücke, wird keiner der ausgewählten Werte veröffentlicht.

<form id="form" action="" method="post">
    <div>
        <select id="inscompSelected" multiple="multiple" class="lstSelected">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>                
        </select>
        <input type="submit" value="submit">
    </div>
</form>
user1430949
quelle
Welche serverseitige Sprache verwenden Sie?
Iambriansreed

Antworten:

132

Sie müssen ein nameAttribut hinzufügen .

Da es sich um eine Mehrfachauswahl handelt, sendet der Client auf HTTP-Ebene nur mehrere Name / Wert-Paare mit demselben Namen. Sie können dies selbst beobachten, wenn Sie ein Formular mit verwenden method="GET": someurl?something=1&something=2&something=3.

Im Fall von PHP, Ruby und einigen anderen Bibliotheken / Frameworks müssten Sie []am Ende des Namens eckige Klammern ( ) einfügen . Die Frameworks analysieren diese Zeichenfolge und präsentieren sie in einem benutzerfreundlichen Format wie einem Array.

Abgesehen vom manuellen Parsen der Anforderung gibt es keine sprach- / Framework- / bibliotheksunabhängige Möglichkeit, auf mehrere Werte zuzugreifen, da alle unterschiedliche APIs haben

Für PHP können Sie verwenden:

<select name="something[]" id="inscompSelected" multiple="multiple" class="lstSelected">
iambriansreed
quelle
11
Da es sich um eine Mehrfachauswahl handelt, soll der Name mit enden [](damit er als Array angezeigt wird).
Rocket Hazmat
2
Ich würde auch hinzufügen, dass Sie, wenn Sie etwas wie PHP verwenden, immer das ausgeben können, um $_POSTzu sehen, welche Variablen nach dem Senden gehalten werden.
Biotox
62
Das Hinzufügen []am Ende des Namens ist eine PHP-Sprache, die von HTML nicht benötigt wird und von anderen Sprachen / Frameworks nicht verwendet wird.
Sergey
2
stimmte mit @Sergey überein. Es bleibt also noch eine Frage. "Wie kann sprachunabhängig auf die mehreren ausgewählten Werte auf der Serverseite zugegriffen werden?"
Ejaz
9
@Ejay: Auf HTTP-Ebene sendet der Client nur mehrere Name / Wert-Paare mit demselben Namen. Sie können dies selbst beobachten, wenn Sie ein Formular verwenden mit method="GET": someurl?something=1&something=2&something=3. Die Bibliothek / das Framework, die Sie verwenden, analysiert nur diese Zeichenfolge und präsentiert sie in einem benutzerfreundlichen Format. Abgesehen vom manuellen Parsen der Anforderung gibt es keine sprach- / Framework- / bibliotheksunabhängige Möglichkeit, auf mehrere Werte zuzugreifen, da alle unterschiedliche APIs haben.
Sergey
0

Versuchen Sie Folgendes: Hier ist select Ihr select-Element

let select = document.getElementsByClassName('lstSelected')[0],
    options = select.options,
    len = options.length,
    data='',
    i=0;
while (i<len){
    if (options[i].selected)
        data+= "&" + select.name + '=' + options[i].value;
    i++;
}
return data;

Die Daten liegen in Form der Abfragezeichenfolge iename = value & name = anotherValue vor

Chin2
quelle