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 :

Valider checkbox avant envoi


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut Valider checkbox avant envoi
    Bonjour,

    Comment s'assurer que au moins une checkbox a ete coche avant d'envoyer un form.

    J'ai ecrit cela mais ca ne fonctionne pas.

    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
    <script type="text/javascript">
    function verif()
    {
    if(box[].checked)
    { return true; }
    else { alert("Validez au moins une checkbox\n"); 
    return false; } }
    </script>
     
    .......
     
    <form name="mapimp"  action="">
    <?php
    $box=$_POST['box'];
    ?>	
    <tr><td class="nom_type" colspan="2"><input type=checkbox name=box[] value='.$result["id"].'> </td></tr>
     
    .......
     
    <input type="button" name="t11" value="Affichez sur la carte" onclick="verif();document.mapimp.target='mappy'; envoyer_form('map.php'); "/>
    Merci

  2. #2
    Expert éminent sénior

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

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

    Vous pouvez toujours regarder cet exemple-ci.
    Comprenez bien que vous devez récupérer les champs avant de faire une vérification dessus.

    Et le name de votre checkbox n'est peut-être pas judicieux. La notion de tableaux apparaitra lorsque vous ferez la recherche sur les éléments qui ont le même name :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=checkbox name=box value='.$result["id"].'>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Salut Vermine,

    Je ne suis pas sur de te comprendre, je voudrais juste pourvoir valider que au moins une case a ete cochee.
    Meme si je retire les crochet apres box ca ne fonctionne toujours pas

    Merci

  4. #4
    Expert éminent sénior

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Oui parce qu'en fait il faut récupérer avant toutes les cases de ce nom-là :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    document.nomduform.nomdescases

    Ce qui renvoie un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    document.nomduform.nomdescases[0]
    document.nomduform.nomdescases[1]
    ...

  5. #5
    Expert éminent sénior

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Ha euh, je n'avais pas vu non plus que vous étiez sur un input de type bouton et que vous lanciez plusieurs fonctions. Du coup, il faudra faire en sorte de ne pas appeler les autres fonctions lorsque vous renvoyer false.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Ok merci Vermine, ca semble plutôt complique a faire, je pense que je vais plutôt vérifier si ma variable box contient quelques chose. Si celle-ci est vide je n'aurais plus qu'a lancer une alert.

    Cela est-il une bonne idée?

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    En fait le name avec crochets permet de récupérer un tableau côté serveur. Donc, c’est à garder !

    Le truc qui coince, je pense, c’est là :

    Il faut récupérer la liste de toutes les boîtes :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    var boxes = document.getElementsByName('box[]');

    Ensuite, une tite boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var noChecked = true;
    for (var i = boxes.length; i-- && noChecked;) {
    	if (boxes[i].checked) {
    		noChecked = false;
    	};
    };
    if (noChecked) {
    	alert('Pas bien !');
    };
    Je boucle à l’envers pour éviter de faire le test sur length à chaque tour, car le sens de la boucle n’a pas d’importance.
    Si une case cochée a été trouvée, noChecked passe à false et on sort de la boucle ; si i arrive à 0, noChecked reste à true et on peut engueuler l’utilisateur.

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Oups
    Diablerie ! Je n'avais pas pensé au PhP ! Pardon pour le nom box[].

    Par contre, la boucle de Watilin est sensiblement la même que celle de la Faq dont j'ai donné le lien plus haut (même si je préfère celle de Watilin).

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Super ca fonctionne, Merci Watilin et Vermine

    voici le code au complet

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <script type="text/javascript">
     
    function verif(){
     
    var boxes = document.getElementsByName('box[]');
     
    var noChecked = true;
     
    for (var i = boxes.length; i-- && noChecked;) {
    	if (boxes[i].checked) {
    		noChecked = false;
    	};
    };
    if (noChecked) {
    	alert('Veuillez selectionner au moins une adresse !');
    };
    };
     
    </script>
     
    .......
     
    <form name="mapimp"  action="">
    <?php
    $box=$_POST['box'];
    ?>	
    <tr><td class="nom_type" colspan="2"><input type=checkbox name=box[] value='.$result["id"].'> </td></tr>
     
    .......
     
    <input type="button" name="t11" value="Affichez sur la carte" onclick="verif();document.mapimp.target='mappy'; envoyer_form('map.php'); "/>

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Par contre autre probleme je voudrais valider que la fonction est ok avant d'envoyer le submit j'utilise donc un if dans la commande suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="t11" value="Affichez sur la carte" onclick="if(verif())envoyer_form('map.php');document.mapimp.target='mappy';"/>
    Si rien 'est coche j'ai l'alerte et i je coche une checkbox plus d'alerte mais rien n'est envoye.

  11. #11
    Expert éminent sénior

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Vous devez renvoyer une valeur dans votre fonction verif(). A savoir, true quand noChecked est faux et false quand noChecked est vrai.

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (var i = boxes.length; i-- && noChecked;) {
    	if (boxes[i].checked) {
    		//noChecked = false;
                              return true;
    	};
    };
    if (noChecked) {
    	alert('Veuillez selectionner au moins une adresse !');
                 return false;
    };

    Lorsque le code réalise l'instruction return, il quitte la fonction.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Ca fonctionne toujours pas

    J'ai essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    onclick="if(verif())return (document.mapimp.target='mappy'&& envoyer_form('map.php');)"
     
    onclick="if(verif()) {document.mapimp.target='mappy' && envoyer_form('map.php');}"
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onclick="if(verif()) {document.mapimp.target='mappy' ; envoyer_form('map.php');}"
    mais aucune de ces solutions n'aboutis au résultat voulu.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    J'ai enfin trouve la bonne syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="if(verif(this.form)!== false) {document.mapimp.target='mappy';envoyer_form('map.php');}"/>

  14. #14
    Expert éminent sénior

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onclick="if(return verif()) {document.mapimp.target='mappy';envoyer_form('map.php');}"/>

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

Discussions similaires

  1. Validation d'une requête SOAP avec WSDL avant envoi
    Par Franckerbo dans le forum C++
    Réponses: 1
    Dernier message: 19/04/2013, 16h30
  2. Validation formulaire en JS avant envoi par appui entrer
    Par darkterreur dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/01/2012, 14h06
  3. Réponses: 2
    Dernier message: 07/05/2010, 11h15
  4. verrification avant envoi de formulaire
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/11/2005, 16h49
  5. [POO] Vérification d'un formulaire avant envoi
    Par KibitO dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/11/2005, 13h55

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