sushiw
Messages postés6Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention 6 juin 2007
-
5 juin 2007 à 19:53
sushiw
Messages postés6Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention 6 juin 2007
-
6 juin 2007 à 11:26
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 :
<form name="Questionnaire" id="Questionnaire" method="post" action="" onsubmit="return validateForm(this)">
Questionnaire
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.
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 :
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 ( test )
{
return true ;
}
else
{
return false ;
}
}
Voila mon problème !
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...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juin 2007 à 06:00
Bonjour,
c'est totalement illisible.
un effort de mise en page serait le bien venu.
malgré tout j'ai vu this.form.[IDCase2].checked
this ? c'est l'objet sur leque on est. donc ici, la fonction....
document.getElementById(IDCase2) irait mieux.
san préjuger du reste !
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 6 juin 2007 à 09:10
Félicitation Bultez, tu as réussi à déchiffrer quelque-chose là-dedans
Outre les remarques déjà faites, je crois avoir vu que tu passais le formulaire en paramètre à la fonction :
- Evite des nom de variables tels que form (pouvant être confondu avec autre chose)-->function validateForm(formulaire)
- Ayant passé le formulaire en paramètre, pourquoi s'embéter avec this.form. Remplace ça par le nom de ton paramètre.
This.form, c'est bien quand tu appelles la fonction pour lui passer le formulaire
sushiw
Messages postés6Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention 6 juin 2007 6 juin 2007 à 09:15
Je suis désolé, mais j'avais pourtant mis tous les retours à la lignes, mais ils ne se sont pas affichés....
Et je n'ai pas non plus trouvé comment éditer le post...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juin 2007 à 09:35
chapeau Ov3rdoze : tu as réussi à déchiffrer quelque-chose là-dedans
>>Evite des nom de variables tels que form
Ov3rdoze++
>>j'avais pourtant mis tous les retours à la lignes
copier/coller de la source avec un éditeur de texte,
pas depuis un générateur, une page html...
>>je n'ai pas non plus trouvé comment éditer le
post...
on ne peux pas.
peut-être sera-ce possible ( dans une prochaine version du site ? selon
certaines discussions, mais rien n'est moins sûr, les responsables du
site n'avaient pas réellement répondu je crois ! ) tant qu'il n'y aura pas
eu de réponses ? ce n'est pas le cas ici.
sushiw
Messages postés6Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention 6 juin 2007 6 juin 2007 à 09:59
Pour résumer :
\n
J'ai un formulaire avec des checkbox avec des id du type "Bloc1Ligne2Colonne4"
\n
J'ai une fonction JS dans un fichier externe pour controler les box cochées
\n
Il me faudrait la méthode pour passer toutes les checkbox en revue dans une boucle, donc pouvoir écrire l'id de la checkbox dans une variable (ou autre) et vérifier si elle sont cochées.
\n
Pour la variable "form" j'utilise ca ailleur et ca pose pas de problème, mais avec un autre nom c'est pareil...
\n
Ma question : Quelle est la syntaxe pour vérifier ca (avec une fonction placée dans un fichier externe) ?
\n
Merci, et merci pour vos effort de compréhension... (j'éspère que cette fois les retours à la ligne seront effectif...) :-(
sushiw
Messages postés6Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention 6 juin 2007 6 juin 2007 à 10:26
Avec 420 checkbox a tester, je ne vois pas d'autre solution que les boucles imbriquées. (5 box par lignes, 84 lignes...)
C'est comme ca que je l'imaginais !
Par contre, avec document.getElementById("Block" + i + "Ligne" + j + "Colonne" + k), comment je sais si elle est cochée ou pas ?
en faisant document.getElementById("Block" + i + "Ligne" + j + "Colonne" + k).checked == true ?