Select multiple récupèration des options

bruno9173 Messages postés 44 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 avril 2010 - 19 avril 2010 à 21:22
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 - 20 avril 2010 à 12:34
Bonsoir,

Je débute en javascript et je bloque depuis une journée sur la récupération dans une variable de l'ensemble des valeurs même non sélectionnées d'un select multiple.
Pour tester j'ai un bouton avec un onclick="select_all", il ramène le nombre total des options mais toujours en indéfini et je ne sais pas pourquoi : L'option undefined est sélectionnée
Merci pour votre aide.

Voici le code :

[CODE]<script type="text/javascript">
function select_all(){
var selectedList = new Array();
var selectBox = document.forms[0].selection;
var nb = selectBox.options.length;
for (var i=0; i<nb; i++) {
if (selectBox.options[i]) {
selectedList.push(selectBox.options[i]);
}
}
var alertTxt = "";
for (opt in selectedList) {
alertTxt += "L'option "+opt.value+" est selectionnée \n";
}
alert(alertTxt);
}
</script>
<form name="form1" id="form1" method="post" action="">
<select id="selection" name="selection" multiple="multiple" size="3">
<option value="s1">site1</option>
<option value="s2">site2</option>
<option value="s3">site3</option>
</select>,


</form>[CODE]

1 réponse

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
20 avril 2010 à 12:34
Bien le bonjour,
je ne sais pas si j'ai tout compris mais s'il faut récupérer les options sélectionnées il existe l'attribut selected sur les tags <option>:
première version (un peu nulle):
<html>

<head>
<script type="text/javascript">
function select_all(){
var selectedList = new Array();
// variable contenant les listes non selectionnées.
var notSelectedList = new Array();
var selectBox = document.forms[0].selection;
var nb = selectBox.options.length;
for (var i=0; i<nb; i++) {

if (selectBox.options[i].selected) {
selectedList.push(selectBox.options[i]);
}
else{
notSelectedList.push (selectBox.options[i]);
}
}
var alertTxt = "";
for (var i =0; i<selectedList.length;i++) {
alertTxt += "L'option "+selectedList[i].value+" est selectionnée \n";
}
alertTxt += "-------------------------\n";
for (var i =0; i<notSelectedList.length;i++) {
alertTxt += "L'option "+notSelectedList[i].value+" n'est pas selectionnée \n";
}
alert(alertTxt);
}
</script>
</head>

<form name="form1" id="form1" method="post" action="">
<select id="selection" name="selection" multiple="multiple" size="3">
<option value="s1">site1</option>
<option value="s2">site2</option>
<option value="s3">site3</option>
</select>,


</form>

</html>

un peu nulle parce qu'il est inutile de remplir des Array juste pour ça.
la deuxième (plus judicieuse):
<html>

<head>
<script type="text/javascript">
function select_all(){
var selectBox = document.forms[0].selection;
var nb = selectBox.options.length;
var alertTxt = "";
for (var i=0; i<nb; i++) {
// si l'attribut selected est présent, alos l'option est sélectionnée.
if (selectBox.options[i].selected) {
alertTxt += "L'option "+selectBox.options[i].value+" est selectionnée \n";
}
else{
alertTxt += "L'option "+selectBox.options[i].value+" n'est pas selectionnée \n";
}
}
alert(alertTxt);
}
</script>
</head>

<form name="form1" id="form1" method="post" action="">
<select id="selection" name="selection" multiple="multiple" size="3">
<option value="s1">site1</option>
<option value="s2">site2</option>
<option value="s3">site3</option>
</select>,


</form>

</html>


Après comme je l'annonce, je ne sais pas si j'ai bien tout compris.

[o-_-o]
0
Rejoignez-nous