1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
/**
* Met à jour les listes à chaque sélection (un peu brut mais vite fait donc ...
*/
function majListes(liste) {
var frm = document.form1;
//pSel1, pSel2, pSel3 sont les listes déroulantes
//On parcourt une liste et on observe la sélection ou pas de l'élément
//dans les deux autres listes: si sélectionné, alors on le met en grisé
var f = function(pSel1, pSel2, pSel3) {
for (var i=1; i<pSel1.options.length;i++)
if (i==pSel2.selectedIndex || i==pSel3.selectedIndex) {
pSel1.options[i].style.color="#C0C0C0";
} else {
pSel1.options[i].style.color="black";
}
};
//la liste des index sélectionnés
var sels = [frm.sel1.selectedIndex,
frm.sel2.selectedIndex,
frm.sel3.selectedIndex];
//l'indice de l'élément sélectionné dans le tableau
var idx = (liste==frm.sel1 ? 0 : (liste==frm.sel2 ? 1 : 2));
//y a-t-il un pb dans les listes ? Oui si l'élément sélectionné dans la liste
//l'est aussi dans une autre des deux listes
var pb = (sels[idx]==sels[(idx+1) % 3] || sels[idx]==sels[(idx+2) % 3]);
//si problème alors on remet le choix par défaut
if (liste.selectedIndex > 0 && pb) liste.selectedIndex = 0;
//on applique par permutation pour chaque liste
f(frm.sel1, frm.sel2,frm.sel3);
f(frm.sel2, frm.sel1,frm.sel3);
f(frm.sel3, frm.sel1,frm.sel2);
//affichage du message si deux mêmes index sont sélectionnés
document.getElementById("msg").innerHTML= pb ? "Valeur choisie dupliquée": "";
}
</script>
</head>
<body>
<form method="post" name="form1">
<p>
<u>form n°1:</u>
<select name="sel1" onchange="majListes(this);">
<option value="-1"> (Faire un choix) </option>
<option value="1"> choix 1 </option>
<option value="2"> choix 2 </option>
<option value="3"> choix 3 </option>
</select>
</p>
<p>
<u>form n°2:</u>
<select name="sel2" onchange="majListes(this);">
<option value="-1"> (Faire un choix) </option>
<option value="1"> choix 1 </option>
<option value="2"> choix 2 </option>
<option value="3"> choix 3 </option>
</select>
</p>
<u>form n°3:</u>
<select name="sel3" onchange="majListes(this);">
<option value="-1"> (Faire un choix) </option>
<option value="1"> choix 1 </option>
<option value="2"> choix 2 </option>
<option value="3"> choix 3 </option>
</select>
</p>
</form>
<div id="msg" style="background-color:red;color:yellow;width:400px"></div>
</body>
</html> |
Partager