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>
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">
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