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 qu'au moins un chekbox est cochée


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut Tester qu'au moins un chekbox est cochée
    Bonjour,

    J'ai un formulaire qui comporte 4 chekbox et je voudrais qu'une alerte s'affiche si aucun d'entre eux n'est coché.

    J'ai procédé comme suit :

    Dans le head, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function testcheck(){
       $test=false;
       for ($i=1; $i<=4; $i++){
        $choix=document.getElementById('checkbox'+$i).checked;
        if ($choix==true){
          $test=true;
        }
      }
       if ($test==true){
       document.getElementById('form1').submit();
      }else{
       alert("Vous devez cocher la bonne réponse");
      }
    }
    et dans le body , j'ai :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1">
     <input type="checkbox" name="v1" id="v1" value="Y"/>
     <input type="checkbox" name="v2" id="v2" value="Y"/>
     <input type="checkbox" name="v3" id="v3" value="Y"/>
     <input type="checkbox" name="v4" id="v4" value="Y"/>
     <input type="submit" name="submit" value="Soumettre une question" onclick="testcheck()"/>
     <input type="hidden" name="MM_update" value="form1"  />
     </form>

    Je n'ai pas d'erreur mais le formulaire est envoyé sans message d'alerte si aucun checkbox n'est coché ...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    C'est tout à fait normal !

    Ta fonction est appelée lors du clic sur le bouton submit et le clic sur le bouton submit provoque la soumission du formulaire, donc dans l'ordre :
    • si définie, la fonction attachée à l'événement submit du formulaire ;
    • l'envoi du formulaire au serveur.

    Ce qui signifie que si la fonction JavaScript n'inhibe pas le comportement par défaut, la seconde étape sera toujours effectuée !

    D'autre part, la vérification peut se faire en une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function testcheck(){
        var cases = document.querySelector('input:checked');
        if(!cases){
            alert('Pas bon !');
            return false;
        }
        return true;
    }
    Bon, ça, c'est la version longue, la version en une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function testcheck(){
        return document.querySelector('input:checked');
    }
    et pour le formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form onsubmit="return testcheck()">
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut
    J'ai suivi tes conseils mais toujours pas d'alerte ?

    dans le head,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function testcheck(){
        return document.querySelector('input:checked');
    }
    et dans le body,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="Soumettre une question" onsubmit="return testcheck()"/>

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    l'événement n'est pas sur la balise input bouton, mais sur la balise form.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form onsubmit="return testcheck()">

    d'une manière générale, ne mets pas d'événement sur un input de type submit.

  5. #5
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut
    j'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<?php echo $editFormAction; ?>" method="POST" name="form1" id="form1" onsubmit="return testcheck()">
    mais l'envoi se fait toujours sans alerte...

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Il devrait pas y avoir de souci avec le code proposé par Bovino. On peut voir le code de ta fonction testcheck() ?
    Tu utilises quel navigateur ?

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 07/08/2012, 09h41
  2. Verifier si au moins une checkbox est cochée
    Par AyManoVic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2011, 08h41
  3. Vérifier si au moins une case est cochée dans checkbox
    Par pasc06 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 18/11/2008, 15h14
  4. Vérifier qu'au moins une case est cochée
    Par zizou86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/02/2008, 13h53
  5. Vérifier si au moins une case est cochée
    Par ozzmax dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/07/2007, 15h34

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