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 :

boucler sur des checkboxes


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut boucler sur des checkboxes
    Bonjour

    Je possède une liste de checkboxes associées à des enregistrement d'une table. Elles ont pour nom : maCase[idDeEnregistrement] et pour id : maCase+idDeEnregistrement.
    Les id des enregistrements ne vont pas de 0 à n par saut de 1. Ce sont des entiers mais qui ne se suivent pas forcément.

    J'aimerais faire une fonction qui permet de cocher touts les cases. Je pourrais faire une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (int i=0;i<nbCases;i++){
        document.getElementById("maCase"+i).checked = true;
    }
    Bien entendu cela ne marchera pas car les indices de mes cases ne se suivant pas. Comment puis-je faire une sorte de foreach sur mes cases.

    Sinon : Peut-on parcourir tous les objets de la page HTML (un foreach objet de la page) ? si c'est le cas, il me suffirait de tester à chaque itération si le nom commence par "maCase".


    Merci d'avance pour vos réponses.

  2. #2
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    Slt,
    tu mets un attribut name (le même pour chaque checkbox) dans tes checkbox,
    tu récupère le tableau via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mescheck=document.getElementsByName('lenom')
    puis tu boucle avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (item in mescheck){
    ...}

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Le problème c'est que l'attribut name vaut déjà : maCase[idDeEnregistrement].

    Je ne peux pas changer cet attribut name car je récupère ensuite les cases cochées dans du code PHP. Dans ce traitement côté serveur, il m'est nécessaire d'avoir l'id des enregistrements associés aux cases cochées.

    Cependant, je ne connaissais la méthode que tu proposes et elle pourra très certainement me servir une prochaine fois.

    Merci

  4. #4
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    Re,
    tes checkbox devant être dans un formulaire, tu dois pouvoir y accéder par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.form.elements[i]
    puis tu prends la propriété name et tu recherches le nom de tes checkboxs (la seconde solution que tu proposais)...

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    on peut aussi boucler sur les checkboxes de même nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mychecks = document.getElementsByName('macase')
     
    for (i-0;i<mychecks.lenght;i++){
     if (mychecks[i].checked==true){....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    heu en fait pour que cela fonctionne dans ton cas il faut le faire à partir du tagName
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mychecks = document.getElementsByTagName('checkbox')
     
    for (i-0;i<mychecks.lenght;i++){
     //et ici tu testes d'abord si le nom commence par macase
        if (mychecks[i].name.subtring(0,5)=="macase"){
           //puis tu testes si il est coché
            if (mychecks[i].checked==true){ ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Merci pour vos réponses

    Voici comment j'ai fait en partant sur ma seconde idée de boucler sur les éléments de la page. Merci dervish pour la syntaxe document.monForm.elements[i] que je ne connaissais pas.
    Vu que je ne connais pas non plus la méthode pour récupérer le nombre d'éléments du formulaire pour savoir quand je dois arrêter la boucle for, j'ai fais un while != null et ça marche.

    Mon code donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var i=0;
    while (document.monForm.elements[i] != null){
        if (document.monForm.elements[i].name.substring(0,5) == "maCase"){
            document.monForm.elements[i].checked = true;
        }
        i++;
    }

    Merci à vous

    A la prochaine

  8. #8
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    Slt,
    pour la longueur d'un tableau, c'est monTab.length,
    donc ici ce serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.monForm.elements.length

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    OK

    Merci dervish

    Passe un bon week-end

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

Discussions similaires

  1. Boucler sur des checkboxes multiples
    Par Ben Gates dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/10/2012, 17h17
  2. condition sur des checkbox
    Par bogsy15 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/08/2006, 09h28
  3. [XSLT] boucler sur des attributs
    Par damyrid dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/03/2006, 10h43
  4. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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