web-dev-qa-db-fra.com

Publier des valeurs à partir d'une sélection multiple

Comment puis-je publier des valeurs à partir d'une sélection multiple dans un formulaire? Lorsque je clique sur Envoyer, aucune des valeurs sélectionnées n'est publiée.

<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

Vous devez ajouter un attribut name.

Comme il s'agit d'une sélection multiple, au niveau HTTP, le client envoie simplement plusieurs paires nom/valeur avec le même nom. Vous pouvez l'observer vous-même si vous utilisez un formulaire avec method="GET": someurl?something=1&something=2&something=3.

Dans le cas de PHP, Ruby et d'autres bibliothèques/frameworks existants, vous devrez ajouter des accolades ([]) à la fin du nom. Les frameworks analyseront cette chaîne et la présenteront dans un format facile à utiliser, comme un tableau. 

Hormis l'analyse manuelle de la demande, il n'y a pas de moyen d'accès à plusieurs valeurs basé sur un langage, une structure ou une bibliothèque, car elles ont toutes des API différentes.

Pour PHP, vous pouvez utiliser:

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

essayez ceci: ici select est votre élément select

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;

Les données se présentent sous la forme de la chaîne de requête i.e.name = valeur & name = anotherValue

0
Chin2