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 :

tester mes checkbox


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    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 : 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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Essaies de remplacer
    var liste = document.forms["menuForm"].elements[NameCheck];
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var liste = document.forms["menuForm"].getElementsByName(NameCheck);
    Sinon, peux-tu nous montrer comment tu appelles la fonction?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form id="menuForm" method="post" target="_top" action="Delete.php" onsubmit="return test_checkbox('Supp[]')">

  4. #4
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liste = document.forms["menuForm"].elements[NameCheck];
    ne renvoie pas un array mais juste un objet et alors ceci plante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(liste[i].checked==true)

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Est-ce que getElementsByName ne fonctionne que sur document ?
    Car ceci devrait fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liste = document.getElementsByName(NameCheck);

    Bon, j'ai trouvé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    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.

  7. #7
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Oups, désolé, j'ai édité mon post. Merci de le relire.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    Ok donc il faudrait que je renomme ma var Supp[] en Supp.
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liste = document.getElementsByName("menuForm")[0].NameCheck;
    Ne renverra rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    liste[i].checked == true
    En cas de une seule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    liste.checked == true
    Résultat, retour à la case départ.









    Bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(list.length)
    {
        for(...)
          if(list[i].checked)
             ...
    }
    else
    {
        if(list.checked)
          ...
    }

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    a ok j'avais pas comprit.

    Merci de ton aide. Je vais tester tout sa.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liste = document.forms["menuForm"].elements[NameCheck];
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liste = document.getElementsByName(NameCheck);
    et tout fonctionne nikel.

  12. #12
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    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.

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

Discussions similaires

  1. Meilleur outil pour tester mes procédures stockées
    Par mercure07 dans le forum Outils
    Réponses: 1
    Dernier message: 17/02/2009, 20h09
  2. Comment faire pour tester un checkbox d'un classeur fermé sans l'ouvrir?
    Par elbourin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2008, 12h59
  3. Tester une checkbox
    Par philippe57460 dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2008, 16h41
  4. Réponses: 5
    Dernier message: 22/05/2008, 14h25
  5. [Tableaux] problème d'affichage de mes checkbox
    Par parko dans le forum Langage
    Réponses: 11
    Dernier message: 04/09/2007, 10h32

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