Bonjour,
Je suis en train de créer un site dans lequel j'ai un questionnaire assez long avec a chaque ligne une affirmation et en face, 5 checkbox. (coresspondant à une note de 0 à 5)
Les affirmations sont regroupées en bloc de 3, et chaque checkbox a un nom comme ca : Bloc1Ligne3Colonne2
Bloc coresspond au numéro du Bloc, Ligne au numéro de la ligne dans le bloc, et Colonne à la position de la chackbox sur la ligne.
Voila le code d'un bloc :
La fonction "changer(arg1,arg2,arg3)" sert à faire respecter une règle dans les réponses en désactivant certaines checkbox : il ne doit y avoir une seule réponse par ligne et pas deux réponses dans la meme colonne au sein d'un meme bloc.
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 <form name="Questionnaire" id="Questionnaire" method="post" action="" onsubmit="return validateForm(this)"> <div id="titreForm"> Questionnaire</div> <div id="corpForm"> <fieldset id="Bloc"> <p> <label for="Bloc1Ligne1">1) Affirmation 1</label> <input type="checkbox" id="Bloc1Ligne1Colonne1" name="Bloc1Ligne1Colonne1" onclick="changer (1,1,1)"/> <input type="checkbox" id="Bloc1Ligne1Colonne2" name="Bloc1Ligne1Colonne2" onclick="changer (1,1,2)"/> <input type="checkbox" id="Bloc1Ligne1Colonne3" name="Bloc1Ligne1Colonne3" onclick="changer (1,1,3)"/> <input type="checkbox" id="Bloc1Ligne1Colonne4" name="Bloc1Ligne1Colonne4" onclick="changer (1,1,4)"/> <input type="checkbox" id="Bloc1Ligne1Colonne5" name="Bloc1Ligne1Colonne5" onclick="changer (1,1,5)"/> </p> <p> <label for="Bloc1Ligne2">2) Affirmation 2</label> <input type="checkbox" id="Bloc1Ligne2Colonne1" name="Bloc1Ligne2Colonne1" onclick="changer (1,2,1)"/> <input type="checkbox" id="Bloc1Ligne2Colonne2" name="Bloc1Ligne2Colonne2" onclick="changer (1,2,2)"/> <input type="checkbox" id="Bloc1Ligne2Colonne3" name="Bloc1Ligne2Colonne3" onclick="changer (1,2,3)"/> <input type="checkbox" id="Bloc1Ligne2Colonne4" name="Bloc1Ligne2Colonne4" onclick="changer (1,2,4)"/> <input type="checkbox" id="Bloc1Ligne2Colonne5" name="Bloc1Ligne2Colonne5" onclick="changer (1,2,5)"/> </p> <p> <label for="Bloc1Ligne3">3) Affirmation 3</label> <input type="checkbox" id="Bloc1Ligne3Colonne1" name="Bloc1Ligne3Colonne1" onclick="changer (1,3,1)"/> <input type="checkbox" id="Bloc1Ligne3Colonne2" name="Bloc1Ligne3Colonne2" onclick="changer (1,3,2)"/> <input type="checkbox" id="Bloc1Ligne3Colonne3" name="Bloc1Ligne3Colonne3" onclick="changer (1,3,3)"/> <input type="checkbox" id="Bloc1Ligne3Colonne4" name="Bloc1Ligne3Colonne4" onclick="changer (1,3,4)"/> <input type="checkbox" id="Bloc1Ligne3Colonne5" name="Bloc1Ligne3Colonne5" onclick="changer (1,3,5)"/> </p> </fieldset> </div> <div id="piedForm"> <input type="submit" name="valid" id="valid" value="Valider" title="Cliquez sur ce bouton valider vos réponses" /> </div>
Pour cette raison, je ne peux malheureusement pas utiliser de bouton radio...
Et voila mon problème : Je n'arrive pas à contrôler que l'utilisateur a bien répondu à toutes les affirmations (donc qu'il y a bien une case cochée par ligne)
J'ai créé une fontion JavaScript que j'appelle au moment de la validation mais elle ne marche pas alors que normalement elle est correcte, du moins au niveau algorithmique.
Voila la fonction :
Voila mon problème !
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 function validateForm(form) { var Bloc = 1 ; var Ligne = 1 ; var Colonne = 1 ; var test = true ; var IDCase ; while ( Bloc <= 28 && test == true) { while ( Ligne <= 3 && test == true) { IDCase1 = "Bloc"+Bloc+"Ligne"+Ligne+"Colonne1" ; IDCase2 = "Bloc"+Bloc+"Ligne"+Ligne+"Colonne2" ; IDCase3 = "Bloc"+Bloc+"Ligne"+Ligne+"Colonne3" ; IDCase4 = "Bloc"+Bloc+"Ligne"+Ligne+"Colonne4" ; IDCase5 = "Bloc"+Bloc+"Ligne"+Ligne+"Colonne5" ; if ( ! this.form.element[IDCase1].checked && ! this.form.[IDCase2].checked && ! this.form.[IDCase3].checked && ! this.form.[IDCase4].checked && ! this.form.[IDCase5].checked && ) { test = false ; } Ligne++ ; } Bloc++ ; } if ( test ) { return true ; } else { return false ; } }
Je ne suis pas un pro du JavaScript, et je ne suis pas sur de la syntaxe pour vérifier qu'une case est cochée et encore moins que l'on puisse utiliser une variable de type chaine au milieu de cette fonction...
Merci d'avance pour votre aide !!
Partager