Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 17/03/2010, 03h56   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
Par défaut tester mes checkbox

Bonsoir ou plutôt bonjour tout le monde.

Voila j'ai un souci qui me prend la tête depuis des heures.
Alors en faite j'ai un formulaire dans lequel il y a un tableau.
Ce tableau contient le résultat d'une requête. Donc j'ai un tableau avec plusieurs ligne. Sur chacune de ces lignes je rajoute une checkbox.

lorsque je clique sur mon bouton submit je fait appel à une fonction javascript qui vérifie qu'au moins une des checkbox est coché.

Voici le code de ma fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function test_checkbox(NameCheck)
{
     var check_ok = 0; //Nb checkbox coché
     var liste = document.forms["menuForm"].elements[NameCheck];
     for(var i=0; i<liste.length;i++)// Je boucle tant que j'ai des éléments
     {
          if(liste[i].checked==true)// Je teste si ma checkbox est coché
          {
               check_ok=check_ok+1;
          }
     }
     if(check_ok == 0)//Si aucune n'est coché
     {
          alert("Aucune checkbox n'a été coché");
          return false;
     }
     else
     {
          return true;
     }
}
Voici ma checkbox :
Code :
1
2
 
<input type="checkbox" name="Supp[]" value='Résultat_requete'>
Alors mon problème est le suivant :
- Lorsque j'ai plusieurs ligne dans mon tableau et donc plusieurs checkbox à tester tout ce passe implacablement. Mais lorsque je n'ai qu'une seule ligne que ma checkbox soit coché ou non j'ai mon message d'erreur qui s'affiche.

C'est incompréhensible pour moi. Je ne comprend vraiment pas ce qui cloche.
Donc si une âme charitable passe par la et pense pouvoir m'aider il ou elle sera la bien venu.

Merci d'avance à vous.

Amicalement Boobs60.

PS : à cette heure ci je suis un peut fatigué donc si il manque des informations n'hésitez pas.
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 06h01   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 4 774
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 4 774
Points : 6 723
Points : 6 723
Bonjour,
Essaies de remplacer
Citation:
var liste = document.forms["menuForm"].elements[NameCheck];
par
Code :
var liste = document.forms["menuForm"].getElementsByName(NameCheck);
Sinon, peux-tu nous montrer comment tu appelles la fonction?
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h13   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
Merci de ta réponse et désolé d'avoir été aussi long mais j'étais en cour.
Bon j'ai testé la ligne que tu ma donné et sa n'a pas l'air de fonctionner car quand je clic sur mon submit et que je n'ai coché aucune checkbox il ne m'affiche pas mon message d'erreur.

Voici comment j'appelle ma fonction :
Code :
1
2
 
<form id="menuForm" method="post" target="_top" action="Delete.php" onsubmit="return test_checkbox('Supp[]')">
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h23   #4
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 885
Points : 4 885
Bonjour,

A mon avis, lorsque vous n'avez qu'une checkbox,

Code :
1
2
 
var liste = document.forms["menuForm"].elements[NameCheck];
ne renvoie pas un array mais juste un objet et alors ceci plante:


Code :
if(liste[i].checked==true)

Dernière modification par vermine ; 17/03/2010 à 14h49.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h31   #5
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 885
Points : 4 885
Est-ce que getElementsByName ne fonctionne que sur document ?
Car ceci devrait fonctionner:

Code :
1
2
 
var liste = document.getElementsByName(NameCheck);

Bon, j'ai trouvé ceci:

Code :
1
2
3
4
5
6
 
//Une seule checkbox
var liste = document.getElementsByName("menuForm")[0].NameCheck.value;
 
//Plusieurs checkbox
var liste = document.getElementsByName("menuForm")[0].NameCheck;
Sauf que "NameCheck" ne doit pas être une variable. Alors j'ai essayé "Supp[]" mais évidemment les "[]" sont refusés. Si le "name=supp" alors ".supp" fonctionne.

Dernière modification par vermine ; 17/03/2010 à 14h48.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h46   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
ok merci je vais regarder de ce coté la.
Je ne vais pas pouvoir tester sa tout de suite car sans que je ne modifie rien dans le code de ma page, maintenant il me sort une erreur de syntaxe.

Merci encore je tiens au courant des que je peux tester.
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h47   #7
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 885
Points : 4 885
Oups, désolé, j'ai édité mon post. Merci de le relire.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 14h54   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
Ok donc il faudrait que je renomme ma var Supp[] en Supp.
Mais
Code :
1
2
 
var liste = document.getElementsByName("menuForm")[0].NameCheck;
me renvoie t il toutes mes checkbox ou bien juste ma checkbox de rang 0 ?
et si sa me renvoie toute mes checkbox pour tester si elle est checké il faut que je fasse liste[i].checked == true ??

Merci pour ton aide
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 15h01   #9
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 885
Points : 4 885
Code :
1
2
 
var liste = document.getElementsByName("menuForm")[0].NameCheck;
Ne renverra rien.

Code :
1
2
 
var liste = document.getElementsByName("menuForm")[0].Supp;
Renverrera la tableau des checkbox mais si il n'y en a qu'une, le problème réapparait.

En cas de plusieurs checkbox:

Code :
1
2
 
liste[i].checked == true
En cas de une seule:

Code :
1
2
 
liste.checked == true
Résultat, retour à la case départ.









Bon...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
if(list.length)
{
    for(...)
      if(list[i].checked)
         ...
}
else
{
    if(list.checked)
      ...
}

Dernière modification par vermine ; 17/03/2010 à 15h11.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 15h03   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
a ok j'avais pas comprit.

Merci de ton aide. Je vais tester tout sa.
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 15h12   #11
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 68
Points : 12
Points : 12
ok donc c'est bon j'ai résolu mon problème grace a toi. Merci encore pour ton aide.

J'ai remplacé ma ligne :

Code :
1
2
 
var liste = document.forms["menuForm"].elements[NameCheck];
Par :
Code :
1
2
 
var liste = document.getElementsByName(NameCheck);
et tout fonctionne nikel.
boobs60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 15h15   #12
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 885
Points : 4 885
Par défaut Suis parti. Loin.

Voila, j'ai encore édité mon post.
Maintenant, je suis loin.



Très loin.





PS: oui, ça fonctionne mais si on veut ajouter le fait de cibler le formulaire, il faut faire un if supplémentaire.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 11h55.


 
 
 
 
Partenaires

Hébergement Web