Un p'tit contrôle de saisie d'un select multiple pour verifier que l'utilisateur ne selectionne pas plus de X valeurs. Ce select etant recupéré aprés envoi dans un fichier PHP, on ne peut pas utiliser la forme traditionnelle du document.form.Monselect.options et document.form.Monselect[].options ne marche pas non plus. Dans ce code, le select multiple des personnes est le 4° élément du formulaire et celui des thémes est le 3°. On veut que le formlaire soit validé si et seulement si il y a au plus 5 thèmes et 10 personnes.
Source / Exemple :
<SCRIPT language="javascript">
function ValiderMail() {
submit=true;
nbr_personne=0;
nbr_theme=0;
//On compte le nombre de personnes :
for (i=0;i < document.form1.elements[4].options.length;i++)
{
if(document.form1.elements[4].options[i].selected){
nbr_personne++;
}
}
//On compte le nombre de thèmes :
for (i=0;i < document.form1.elements[3].options.length;i++)
{
if(document.form1.elements[3].options[i].selected){
nbr_theme++;
}
}
if (nbr_personne > 10) {
submit=false;
}
if (nbr_theme > 5) {
submit=false;
}
if(submit){
form1.submit();
}else{
alert("Vous ne pouvez selectionner au maximume que 5 thèmes et 10 personnes !!!");
}
}
</SCRIPT>
puis dans le formulaire :
<form name="form1" method="post" action="insertion_photo.php3">
<select name="lieu">
<option value="x">x</option>
<option value="y">y</option>
etc ...
</select>
<select name="annee">
<option value="x">x</option>
<option value="y">y</option>
etc ...
</select>
<!-- LE select suivant est un exemple simplifié de celui des thèmes, à l'origine, les valeurs etaient recupérées dans la base de données-->
<select MULTIPLE SIZE=6 name="theme[]">
<option value="x">x</option>
<option value="y">y</option>
etc ...
</select>
<select MULTIPLE SIZE=6 name="personne[]">
<option value="x">x</option>
<option value="y">y</option>
etc ...
</select>
<input type="button" name="Submit" value=" OK " onClick="ValiderMail()">
</form>
Conclusion :
Voila voila, rien d'extraordinaire mais je me suis retrouvé bloqué betement par l'obligation de nommer le champ theme[] pour recuperer la variable en PHP. Et comme je le disais plus haut form1.theme[] et form1.theme ne sont pas valides en javascript. On doit donc passer par l'alternative : form.elements[i]
Je met ceci au cas ou un gus aie le même problême un jour, sait on jamais ;o)
adieu !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.