Limitation de choix dans une liste de cases à cocher
Posté : 27 juin 2021, 13:54
Bonjour,
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 :
Jusque là, tout allait bien.
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 :
Ca permettrait à un licencié homme de s'inscrire dans 3 tableaux masculins ce qui n'est pas souhaité. Ca permettrait aussi à une femme de faire la même chose alors qu'on veux juste autoriser 1 ou 2 tableaux masculins + éventuellement le tableau féminin.
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
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