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 :

Checkbox et submit


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2020
    Messages : 30
    Points : 20
    Points
    20
    Par défaut Checkbox et submit
    Bonjour à tous,

    Je me permets de vous exposer mon projet où je rencontre un problème.

    Je réalise un formulaire où je demande à un individu de réaliser 3 choix sur 5 propositions. J'utilise des checkbox.

    Je souhaite ne pas lui donner la possibilité de faire plus de 3 choix (avec un petit message qui s'affiche)

    Ceci je suis arrivé à le faire:

    Code html : 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
    23
    24
    25
    26
    27
    28
    29
    <form action="http://xxxxxxx.php" method="post" enctype="multipart/form-data" name="formSaisie1" target="_self" onSubmit="return soumissionOk(this)">
     
    ...
     
    <input name="image1" type="checkbox"  class="photo" id="1" onClick="doAction()">
    <input  name="image2" type="checkbox" class="photo" id="2" onClick="doAction()">
    <input  name="image3" type="checkbox" class="photo" id="3" onClick="doAction()">
    <input  name="image4" type="checkbox" class="photo" id="4" onClick="doAction()">
    <input  name="image5" type="checkbox" class="photo" id="5" onClick="doAction()">
     
    ...
     
    <input type="submit" name="Suivant" id="Suivant" value="Suivant">
     
    ...
     
    <script>
    function doAction(){
    var max = 3;
    var z = 0;
    var checkboxes = document.getElementsByClassName("photo");
    for (var i = 0; i < checkboxes.length; i++) {
    if (checkboxes.item(i).checked == true){
    z++
    if (z > max) {
    checkboxes.item(i).checked = false;
    alert('Vous ne pouvez pas faire plus de 3 choix.')
    }}}}
    </script>

    Je souhaiterai aussi l'obliger à faire trois choix (et pas moins) pour qu'il puisse envoyer le formulaire. S'il ne fait pas 3 choix, je ferai apparaître un petit message du genre "Vous devez faire 3 choix"

    J'ai essayé en mettant z<max mais, à chaque fois que je clique sur une case à cocher, il me mets mon message d'erreur "vous devez faire 3 choix". Par exemple, je sélectionne un choix, message d'erreur, je sélectionne un 2eme choix, message d'erreur, etc. Je souhaiterai que se soit à la validation du formulaire (envoi) que le message d'erreur s'affiche.

    Je pense que c'est au niveau du "clic" validation du formulaire que cela doit se jouer. Et si c'est le cas, je ne sais pas comment faire.

    Est-ce que quelqu'un d'entre vous aurez une idée pour m'aider ?

    Merci à tous

    A bientôt

    Bruno

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 091
    Points : 16 645
    Points
    16 645
    Par défaut
    Salut

    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
    function doAction(){
    var max = 3;
    var z = 0;
    var checkboxes = document.getElementsByClassName("photo");
    for (var i = 0; i < checkboxes.length; i++) {
      if (checkboxes.item(i).checked == true){
        z++
        if (z > max) {
          checkboxes.item(i).checked = false;
          alert('Vous ne pouvez pas faire plus de 3 choix.')
          exitFunction = true
          breack; // <=== sort de la boucle .... et de la function
        }
      }
     }
    }
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    une autre solution, mettre un écouteur d'évènement sur l'input de type submit, ça evite de lancer la fonction à chaque click sur une checkbox. Ca permet aussi de verifier que le nombre n'est pas inférieur à 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const btnSubmit = document.querySelector('#Suivant');
            btnSubmit.addEventListener('click', (e) => {
                const checkboxes = document.querySelectorAll("input[type=checkbox]:checked")
                if (checkboxes.length !== 3) {
                    console.log(e)
                    e.preventDefault();
                    alert('Vous ne devez selectionner que 3 items')
                }
            })
    PS: utilise const ou let plutot que var, et il est preferable de mettre des ecouteurs d'evenement (addeventlistener) que des fonctions dans les attributs onclick du html.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2020
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour Nikopol,

    Merci beaucoup, ça marche super bien.

    Du coup, j'ai modifié pour const

    Encore merci

    Bruno

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

Discussions similaires

  1. Décochage d'une checkbox avec submit
    Par davidlariv dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/12/2014, 15h16
  2. checkbox et submit
    Par charmail dans le forum Langage
    Réponses: 10
    Dernier message: 01/09/2011, 12h36
  3. [.Net 2][VS2005] Treeview et checkbox submit
    Par mediateur59 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/08/2007, 10h18
  4. Garder la selection des checkbox apres submit
    Par etoileDesNeiges dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/06/2007, 13h39
  5. submit on click sur un checkbox
    Par amika dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/05/2005, 15h48

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