wake-up-neo.net

Posten Sie Werte aus einer Mehrfachauswahl

Wie kann ich Werte aus einem Multiple Select in einem Formular buchen? Wenn ich auf "Senden" klicke, wird keiner der ausgewählten Werte gebucht.

<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>
57
user1430949

Sie müssen ein name-Attribut hinzufügen.

Da dies ein Multiple-Select ist, 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 method="GET": someurl?something=1&something=2&something=3 verwenden.

Im Falle von PHP, Ruby und einigen anderen Bibliotheken/Frameworks müssen Sie am Ende des Namens eckige Klammern ([]) hinzufügen. Die Frameworks analysieren diese Zeichenfolge und präsentieren sie in einem einfach zu verwendenden Format, beispielsweise einem Array. 

Abgesehen von der manuellen Analyse der Anforderung gibt es keine Möglichkeit, auf mehrere Werte auf Sprache/Rahmen/Bibliothek zuzugreifen, da alle über unterschiedliche APIs verfügen

Für PHP können Sie Folgendes verwenden:

<select name="something[]" id="inscompSelected" multiple="multiple" class="lstSelected">
110
iambriansreed

probieren Sie folgendes aus: 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 einer Abfragezeichenfolge vor, d. H. Name = value & name = anotherValue

0
Chin2