Controle de saisie d'un select multiple (pas plus de x elements) et php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 659 fois - Téléchargée 27 fois

Contenu du snippet

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 !

A voir également

Ajouter un commentaire

Commentaires

cs_yvetot
Messages postés
4
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
18 juillet 2003
-
c'est vrai ca marche c' bienb pensé
kindjal
Messages postés
2
Date d'inscription
vendredi 19 décembre 2003
Statut
Membre
Dernière intervention
21 juillet 2004
-
ne marche pas :(

document.form1.elements.4.options.length a la valeur null ou n'est pas un objet

pourtant copier coller et rajouter les balises normales head et body
kindjal
Messages postés
2
Date d'inscription
vendredi 19 décembre 2003
Statut
Membre
Dernière intervention
21 juillet 2004
-
et je viens de trouver pourquoi !

dans les boucles for ne pas mettre
document.form1.elements[4].options.length
mais tout simplement
document.form1.elements[4].length

:D

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.