<html> <head> <script type="text/javascript"> function checkUniqueValue(_sel){ // Création d'un enregistrement de type tableau var result = new Array(); var currentValue; // si le select est précisé. if (_sel){ // Valeur en cours currentValue = _sel.options[_sel.selectedIndex].value; // L'ajoute de suite au tableau. result[currentValue] = true; } // Liste des valeurs sélectionnnées dans les selects. var listSelectedValue = new Array(); // Récupération de toutes les combos. var _selects = document.getElementsByTagName("select"); // parcours l'ensemble de ceux-ci for ( var i=0; i<_selects.length; i++){ // on considère que l'on ne traite que les select qui ont un id de type: position[ if( _selects[i].id && _selects[i].id.indexOf ("position[") != -1 && ((_sel != null && _selects[i].id != _sel.id) || !_sel)) { // Récupération de la valeur sélectionnée. var actualValue = _selects[i].options[_selects[i].selectedIndex].value; // y a-t-il une valeur de sélectionnée ? if (actualValue){ // stock la valeur sélectionnée. listSelectedValue.push(actualValue); // le plus simple est de tester si la valeur existe dans le tableau de résultat. if ( result[actualValue] ){ // La, il faut informé l'utilisateur que ça va pas bien. alert (" item selected value '"+actualValue+"' is defined for more than one select"); if ( _sel){ _sel.focus(); } return false; } // sinon, il suffit de l'ajouter au tableau des résultats. else{ // si l'on demande la validation sans passer de select, il faut tester tous les selects. if ( !_sel){ result[actualValue] = true; } } } } } if ( currentValue){ listSelectedValue.push(currentValue); } // maintenant on va reparcourir la liste des selects afin de taggué les valeurs sélectionnées. for ( var i=0; i<_selects.length; i++){ // Récupère ses options. var options =_selects[i].options; // Première chose à faire supprimer la couleur des items selectionnés. for ( var j = 0; j<options.length; j++){ options[j].style.color="black"; options[j].style.backgroundColor="white"; } // Parcours l'ensembles des lignes sélectionnées for (var j =0; j<listSelectedValue.length; j++){ var actual = listSelectedValue[j] // pour chacune des options, si il y a correspondance entre la valeur for (var k=0; k<options.length; k++){ // si égalité entre l'attribut value du select et la valeur sélectionnée en cours de vérif, change la couleur de l'option if ( options[k].value == actual){ options[k].style.color="white"; options[k].style.backgroundColor="black"; } } } } return true; } </script> </head> <select id="position[0]" onchange=" return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <select id="position[1]" onchange="return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <select id="position[2]" onchange="return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </html>
<html> <head> <script type="text/javascript"> function checkUniqueValue(_sel){ // Création d'un enregistrement de type tableau var result = new Array(); // si le select est précisé. if (_sel){ // Valeur en cours var currentValue = _sel.options[_sel.selectedIndex].value; // L'ajoute de suite au tableau. result[currentValue] = true; } // Récupération de toutes les combos. var _selects = document.getElementsByTagName("select"); // parcours l'ensemble de ceux-ci for ( var i=0; i<_selects.length; i++){ // on considère que l'on ne traite que les select qui ont un id de type: position[ if( _selects[i].id && _selects[i].id.indexOf ("position[") != -1 && ((_sel != null && _selects[i].id != _sel.id) || !_sel)) { // Récupération de la valeur sélectionnée. var actualValue = _selects[i].options[_selects[i].selectedIndex].value; // y a-t-il une valeur de sélectionnée ? if (actualValue){ // le plus simple est de tester si la valeur existe dans le tableau de résultat. if ( result[actualValue] ){ // La, il faut informé l'utilisateur que ça va pas bien. alert (" item selected value '"+actualValue+"' is defined for more than one select"); if ( _sel){ _sel.focus(); } return false; } // sinon, il suffit de l'ajouter au tableau des résultats. else{ // si l'on demande la validation sans passer de select, il faut tester tous les selects. if ( !_sel){ result[actualValue] = true; } } } } } return true; } </script> </head> <select id="position[0]" onchange=" return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <select id="position[1]" onchange="return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <select id="position[2]" onchange="return checkUniqueValue(this)"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </html>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question