Bonjour,
Sur un site intranet, j'ai un formulaire avec un select à choix multiple où j'ai intégré l'évènement javascript "OnChange".
Quand l'utilisateur clique sur une ou plusieurs options, la fonction javascript pilote(processus) me permet de parcourir les options sélectionnées et d'ajouter via createElement un div, dans ce même formulaire, que je remplie ensuite grâce a innerHTML.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <select name="processus[]" id="processus" OnChange="pilote('processus');" size=4 multiple="multiple"> <?php while($DataProcessus = mysql_fetch_array($ReqProcessus)) { echo '<option value="'.$DataProcessus['id_processus'].'">'.$DataProcessus['nom_processus'].'_'.$DataProcessus['description_processus'].'</option>'; } ?> </select>
Ce que j'essaye de faire c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //Fonction qui affiche une chkbox pour savoir si un utilisateur ajouter est pilote d'un processus function pilote(selectId) { var elmt = document.getElementById(selectId); var parentElement = document.getElementById("piloteProcessus"); if(elmt.multiple == false) { return elmt.options[elmt.selectedIndex].value; } var values = new Array(); for(var i=0; i< elmt.options.length; i++) { if(elmt.options[i].selected == true) { values[values.length] = elmt.options[i].value; var titre = document.createElement("<div>"); titre.id = values; parentElement.appendChild(titre); var selectedText= elmt.options[i].text; document.getElementById(titre.id).innerHTML = '<table style="width:50%; margin:0 auto"><tr><td style="width:80%">Pilote ' + selectedText + ' </td><td style="width:10%"><label>PP </label><input type="checkbox" id="pp" name="pp" value="'+ values +'"> </td><td style="width:10%"><label>PS </label></label><input type="checkbox" id="ps" name="ps" value="'+ values +'"></td></tr></table><br/>'; } } }
Quand l'utilisateur a déselectionné une option, il faudrait que le div qui a été crée auparavant soit supprimé.
J'ai essayé d'intégrer dans le code :
Mais ca ne fonctionne pas bien sûr, je ne rentre jamais dans cette condition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(elmt.options[i].selected == false) { document.getElementById(parentElement).parentNode.removeChild(document.getElementById(titre.id)); }
Je ne vois pas trop comment faire malgré mes recherches et comme ca fais deux jours que je suis dessus je me retourne vers vous.
J'espère que j'ai été assez clair dans mon explication. Si ce n'est pas le cas, n'hésitez pas à me demander plus d'infos.
Merci d'avance pour vos réponses.
Partager