Je suis confronté à une petite difficulté pour laquelle je sollicite votre aide. J'ai mis en place il y a deux ans un formulaire d'inscription relativement automatique pour une compétition sportive. En fonction des paramètres du licencié (sexe, classement...), il peut s'inscrire via une liste de case à cocher dans un ou plusieurs tableaux de la compétition, dans la limite de deux tableaux maxi.
J'ai pu gérer cette limite avec le bout de code javascript ci-après :
Code : Tout sélectionner
<script type="text/javascript">
/* Limitation à deux cases cochées maximum */
var cb = document.querySelectorAll("[type=checkbox]");
var i = 0,
l = cb.length;
for (; i<l; i++)
cb[i].addEventListener("change", function (){
if (document.querySelectorAll(":checked").length > 2)
this.checked = false;
}, false);
</script>Mais je dois désormais faire face à une évolution que je ne sais pas gérer. En effet, pour la prochaine compétition, nous voulons permettre aux féminines de s'inscrire dans trois tableaux (dont le tableau féminin). Ca revient à :
Hommes => 1 ou 2 tableaux sur 3 choix possibles généralement ce qui leur laisse 2 possibilités (1 tableau masculin ou 2 tableaux masculins)
Femmes => 1 ou 2 tableaux sur 3 choix possibles généralement mais avec en plus la possibilité de s'inscrire dans le tableau féminin ce qui leur laisse 5 possibilités (1 tableau féminin ou 1 tableau masculin ou 1 tableau masculin + 1 tableau féminin ou 2 tableaux masculins ou 2 tableaux masculins + 1 tableau féminin)
Je ne peux donc pas me permettre de remplacer le 2 par un 3 dans le ligne suivante :
Code : Tout sélectionner
if (document.querySelectorAll(":checked").length > 2)Je précise que l'information du sexe du licencié est une donnée que je récupère au tout début du processus d'inscription. J'ai donc potentiellement la possibilité de l'exploiter par la suite.
Faut-il retravailler ce code Javascript ?
Faut-il dissocier les choses en affichant le tableau féminin que pour les féminines mais en sortant cette case du contrôle du nombre de cases cochées ?
Faut-il envisager autre chose ?
Merci d'avance pour vos conseils