IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

validation form en fonction de plusieurs groupe de checkbox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Par défaut validation form en fonction de plusieurs groupe de checkbox
    vous allez certainement trouver mon code ridicule mais voilà plusieurs jours que je tente de résoudre mon problème :
    voici le but :
    Je ne peux pas faire autrement pour plus tard (bd déjà organisé) que d'avoir des noms différents de checkbox.
    Je récapitule le but si qq un peux m'aider :
    J'ai plusieurs groupes de checkbox dans un formulaire.
    Je dois vérifier pour chaque groupe de checkbox (nommés par un id dans un div) que l'utilisateur n'a pas coché trop de cases. La vérif se fait direct lors du clic.
    voici mon code qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <html>
    <head>
    <title></title>
    <script language="javascript"> 
    function checkrp1(num,nbre_max,nbre,cazy,rptop){ 
    //alert(cazy);
    var tmp = document.getElementById(cazy);
    var cbs = tmp.getElementsByTagName("INPUT");
    var nbre_max; 
    var nbre; 
    var num; 
    var rptop;
     
    for (var i=0; i < cbs.length; i++){
     
        if((document.form["rp"+num].checked)==true){
            nbre++;
    		num++;
    		//alert(num);
        } else { 
            nbre--; 
    		num--;
        } 
        if(nbre > nbre_max){ 
           alert('Pas plus de ' + nbre_max + ' réponses ! ' + 'rp ' + num); 
     
    		num--;
            document.form["rp"+rptop].checked=false; 
            nbre--;
        }
    }
    }
    </script></head>
    <body>
    <form name="form" method="POST"> 
    <div id="case1">
    <input type="checkbox" name="rp1" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />1er choix
    <input type="checkbox" name="rp2" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />2eme choix
    <input type="checkbox" name="rp3" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />3eme choix
    <input type="checkbox" name="rp4" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />4eme choix<BR>
    </div>
    <div id="case2">
    <input type="checkbox" name="rp5" value="2" id="2" OnClick="checkrp1(5,2,1,'case2',5);" />1er choix
    <input type="checkbox" name="rp6" value="2" id="2" OnClick="checkrp1(6,2,1,'case2',6);" />2eme choix
    <input type="checkbox" name="rp7" value="2" id="2" OnClick="checkrp1(7,2,1,'case2',7);" />3eme choix
    <input type="checkbox" name="rp8" value="2" id="2" OnClick="checkrp1(8,2,1,'case2',8);" />4eme choix<BR>
    </div>
    </form> 
    </body>
    </html>
    Je vous remercie d'avance.
    Stéphane.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Par défaut meme post avec commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <html> 
    <head> 
    <title></title> 
    <script language="javascript"> 
    function checkrp1(num,nbre_max,nbre,cazy,rptop){ 
    //cazy : le nom de l'id div
    //nbre_max : le nombre maximum de réponse possible
    //nbre : un compteur lambda comme i
    //rptop : un ancien essai de variable
    //alert(cazy); 
    var tmp = document.getElementById(cazy); 
    var cbs = tmp.getElementsByTagName("INPUT"); 
    var nbre_max; 
    var nbre; 
    var num; 
    var rptop; 
     
    for (var i=0; i < cbs.length; i++){ 
    //je boucle sur le nombre d'input checkbox dans l'id du div
    if((document.form["rp"+num].checked)==true){ 
    //je vérifie que la case est coché, il y a un problème d'association entre num et la boucle..
    //j'incrémente num pour qu'il vérifie les autres rp, mais si au départ num=7 et si tant est qu'il y ai 4 input checkbox je me retrouve avec un num à 11 alors qu'il n'existe pas de checkbox nommé rp11, il faut donc revenir à 5, je ne sais pas comment faire (pas assez compétent)
    nbre++; 
    num++; 
    //alert(num); 
    } else { 
    nbre--; 
    num--; 
    } 
    if(nbre > nbre_max){ 
    alert('Pas plus de ' + nbre_max + ' réponses ! ' + 'rp ' + num); 
    num--; 
    nbre--; 
     
    //je décheck le dernier coché si nbre est supérieur à ce qui est autorisé
     
    document.form["rp"+num].checked=false; 
     
    } 
    } 
    } 
    </script> </head> 
    <body> 
    <form name="form" method="POST"> 
    <div id="case1"> 
    <input type="checkbox" name="rp1" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />1er choix 
    <input type="checkbox" name="rp2" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />2eme choix 
    <input type="checkbox" name="rp3" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />3eme choix 
    <input type="checkbox" name="rp4" value="1" id="1" OnClick="checkrp1(1,3,1,'case1');" />4eme choix<BR> 
    </div> 
    <div id="case2"> 
    <input type="checkbox" name="rp5" value="2" id="2" OnClick="checkrp1(5,2,1,'case2',5);" />1er choix 
    <input type="checkbox" name="rp6" value="2" id="2" OnClick="checkrp1(6,2,1,'case2',6);" />2eme choix 
    <input type="checkbox" name="rp7" value="2" id="2" OnClick="checkrp1(7,2,1,'case2',7);" />3eme choix 
    <input type="checkbox" name="rp8" value="2" id="2" OnClick="checkrp1(8,2,1,'case2',8);" />4eme choix<BR> 
    </div> 
    </form> 
    </body> 
    </html>

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <html>
    <head>
    <title></title>
    <script language="javascript">
    function checkrp1(nbmax,ref){
    	lediv = ref.parentNode;
    	leschecks = lediv.getElementsByTagName("input");
    	var flag = false;	
    	var nbcheck = 0;
    	for(var i=0;i< leschecks.length;i++){
    		if(leschecks[i].checked == true)
    			nbcheck++;
    		if(nbcheck > nbmax){
    			ref.checked = false;
    			nbcheck--;
    			flag=true;
    			break;
    		}
    	}
    	if(flag)
    		alert("Pas plus de "+nbmax);
    }
    </script> </head>
    <body>
    <form name="form" method="POST">
    <div id="case1">
    <input type="checkbox" name="rp1" value="1" OnClick="checkrp1(3,this);" />1er choix
    <input type="checkbox" name="rp2" value="1" OnClick="checkrp1(3,this);" />2eme choix
    <input type="checkbox" name="rp3" value="1" OnClick="checkrp1(3,this);" />3eme choix
    <input type="checkbox" name="rp4" value="1" OnClick="checkrp1(3,this);" />4eme choix<BR>
    </div>
    <div id="case2">
    <input type="checkbox" name="rp5" value="2" OnClick="checkrp1(2,this);" />1er choix
    <input type="checkbox" name="rp6" value="2" OnClick="checkrp1(2,this);" />2eme choix
    <input type="checkbox" name="rp7" value="2" OnClick="checkrp1(2,this);" />3eme choix
    <input type="checkbox" name="rp8" value="2" OnClick="checkrp1(2,this);" />4eme choix<BR>
    </div>
    </form>
    </body>
    </html>
    j'ai enlevé les id car on ne peut pas avoir le meme id dans une page

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/05/2012, 09h48
  2. Appel d'une fonctions par plusieurs Form
    Par developppez dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/12/2008, 01h56
  3. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42
  4. affichage forme en fonction de la resolution de l'ecran
    Par shiners300 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/11/2004, 14h33
  5. Valider avant execution fonction
    Par jeff37 dans le forum ASP
    Réponses: 3
    Dernier message: 08/09/2004, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo