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 :

Verification radio avant envoi


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Verification radio avant envoi
    slt à tous
    j'ai un petit blem sur un verif de formulaire et plus précisement sur les radio.

    j'explique mes radio sont géneres auto via un bdd php
    bdd "poids"
    variable externe $thep

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    echo'<form action="?rub=panierrecap&prod" method="post" name="frm" onsubmit="return ctr();" >';
    $req13 = mysql_query("SELECT * FROM poids WHERE $thep BETWEEN tranch1 AND tranch2") or die("Erreur SQL13 !"); 
    	while($data13 = mysql_fetch_array($req13)) {
    	echo'<table><tr><td class="cad03 centrage"><input type="radio" name="choix" value="'.$data13[id].'"></td>
    	<td class="cad03">'.$data13[trans].'</td>
    	<td class="cad07">'.$data13[infos].'</td>
    	<td class="cad03 droite">'.$data13[prix].' €</td>
    	</tr></table><br />';
    	}
    echo'<input type="submit" value="CONTINUER" class="boutonlien" >
    </form>';
    je vérifie qu'au moins un des radios est cochés.

    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 ctr()
    	{
       n=frm.choix.length;
       var checkvalue = '';
       for (i=0; i<n; i++)
       {
    	 if (frm.choix[i].checked)
         {
             checkvalue = frm.choix[i].value;
             break;
         }
       }
       if(checkvalue == '')
       {
           alert('veuillez sélectionner une option de port !')
           return(false);
       }
    }	
    </script>
    cela fonctionne quand j'ai plus d'un radio qui est généré, mais cela ne marche plus si j'en ai qu'un.

    ou est mon blem ???
    Merci d'avance de votre aide.
    @+

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    bonjour,
    Merci de poster le code HTML généré et non le code php.
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Pardon
    voici le code de la page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form action="?rub=panierrecap&prod" method="post" name="frm" onsubmit="return ctr();" >54Livraison impossible avec ce poids de colisLivraison impossible avec ce poids de colisLivraison impossible avec ce poids de colis
    <table><tr><td class="cad03 centrage"><input type="radio" name="choix" value="4"></td>
    	<td class="cad03">la poste</td>
    	<td class="cad07"></td>
    	<td class="cad03 droite">50 €</td>
    	</tr></table><br /><table>
    <tr><td class="cad06 droite"></td>
    <td  class="cad05 droite" ><input type="submit" value="CONTINUER" class="boutonlien" >
    <img class="vertical" src="./img/arrow.png" alt="" /></td></tr>
    </table>
    </form>

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tout simplement parce que :

    ne renvois pas une taille mais undefined s'il n'y a qu'un seul élément puisqu'il ne s'agit plus d'un tableau mais d'un simple objet
    solution , si undefined alors , récupérer directement l'objet
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  5. #5
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Merci pour ton aide
    mais comment tu traduits ca en code ???

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    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
    n = (frm.choix.length != "undefined") ? frm.choix.length:frm.choix;
    var checkvalue = '';
    if(typeof(n) == number){
       for (i=0; i<n; i++)
       {
    	 if (frm.choix[i].checked)
         {
             checkvalue = frm.choix[i].value;
             break;
         }
       }
    }
    else{
     if (frm.choix.checked)
         {
             checkvalue = frm.choix.value;
             break;
         }
    }
    ...
    un truc dans ce genre
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #7
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Re
    oui mais non
    car cela ne fonctionne pas.
    si je ne coche pas le radio cela ne me dis rien alors que cela devrait m'indiquer de cocher le radio

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    je t'ai donné une explication pour résoudre ton problème , il y a surement un bug , car j'ai tapé de tête ... tu as les grandes lignes
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  9. #9
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    si tu veux le code d'origine
    il est dans le 1er post.

    Comme je maîtrise pas trop le javascript j'ai un peu de mal à debugger

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par spawns Voir le message
    si tu veux le code d'origine
    il est dans le 1er post.
    je pense qu'il l'aurait retrouvé tout seul

    Normalement il suffit de remplacer les "..." de la fin du code donné par le tien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       if(checkvalue == '')
       {
           alert('veuillez sélectionner une option de port !')
           return(false);
       }
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    c'est ce que j'ai fait mais ca change rien

    voila le code avec les modifs :
    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
     
    <script type="text/javascript">
        function ctr()
    	{
    n = (frm.choix.length != "undefined") ? frm.choix.length:frm.choix;
    var checkvalue = '';
    if(typeof(n) == number){
       for (i=0; i<n; i++)
       {
    	 if (frm.choix[i].checked)
         {
             checkvalue = frm.choix[i].value;
             break;
         }
       }
    }
    else{
     if (frm.choix.checked)
         {
             checkvalue = frm.choix.value;
             break;
         }
    }
       if(checkvalue == '')
       {
           alert('veuillez sélectionner une option de port !')
           return(false);
       }
    }	
    </script>

  12. #12
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Pourquoi ne pas cocher un bouton radio par défaut? C'est ce que je fais toujours. Au mieux l'utilisateur n'a pas à cliquer, au pire il doit cliquer. Chose qu'il est obligé de faire si tu crées un contrôle.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Au mieux l'utilisateur n'a pas à cliquer, au pire il doit cliquer.
    Je vois encore pire : il oublie qu'il faut cliquer (ou s'en tape), et il n'y a pas de contrôle possible.

    Ne rien sélectionner l'oblige à choisir.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Je vois encore pire : il oublie qu'il faut cliquer (ou s'en tape), et il n'y a pas de contrôle possible.

    Ne rien sélectionner l'oblige à choisir.

    A+
    A choisir n'importe quoi? Ca revient au même...
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    A choisir n'importe quoi? Ca revient au même...
    Pas vraiment : dans ce cas c'est un acte volontaire, et suivant le domaine (fonctionnel) de l'application, le résultat est différent (s'il y a un problème de responsabilité, par exemple).

    Ici, pour des options de port, apparemment :
    Si le marseillais qui a commandé son lave-vaisselle oublie de changer le choix par défaut "Tenir le produit à ma dispo dans votre entrepôt de Lille", ça peut aussi faire grincer des dents (alors que ça sera une erreur d'inattention "de bonne foi").

    Par contre, pour un formulaire dans un blog, je t'accorde que ça n'a aucune importance

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Oui d'accord avec toi E.Bzz

    c'est pourquoi il faut absolument qu'au moins un bouton soit coché et même s'il n'y a qu'un choix possible il faut que l'internaute le coche lui.

    le code actuel ne fonctionne pas car si aucun radio n'ai coché cela valide tout de même le formulaire.

  17. #17
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Bon ben si vous insistez
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
    <head>
       <title>tester si un bouton radio est coché</title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
       <form id="f" method="post">
          <input id="c1" name="c" type="radio" value="1" />
          <input id="c2" name="c" type="radio" value="2" />
          <input id="c3" name="c" type="radio" value="3" />
          <input id="s" type="submit" value="soumettre" />
       </form>
       <script type="text/javascript">
       var Utils = {
          Evenement: {
             ajouter: function(elm, evt, fn) {
                if (document.addEventListener) {
                   if (!elm.length || elm.elements) {
                      elm.addEventListener(evt, function(e) {
                         if (!fn(e)) {e.preventDefault();}
                      }, false);
                   } else {
                      for (var i = 0, imax = elm.length; i < imax; i++) {
                         elm[i].addEventListener(evt, function(e) {
                            if (!fn(e)) e.preventDefault();
                         }, false);
                      }
                   }
                } else if (document.attachEvent) {
                   if (!elm.length || elm.elements) {
                      var r = elm.attachEvent("on" + evt, fn);
                      return r;
                   } else {
                      for (var i = 0, imax = elm.length; i < imax; i++) {
                         var r = elm[i].attachEvent("on" + evt, fn);
                         return r;
                      }  
                   }
                }
             }
          },
          Formulaire: {
             /****** partie intéressante ******/
             obtenirValeur: function(elms) {
                var r = false;
                for (var i=0, imax=elms.length; i<imax; i++) {
                   if (elms[i].checked) {
                      r = true;
                      break;
                   };
                }
                return r;
             }
             /****** partie intéressante ******/
          }
       }
       Utils.Evenement.ajouter(document, "submit", function(e){
          var elm = e.Target || e.srcElement;
          /****** partie intéressante ******/
          var cs = document.getElementsByName("c");
          return Utils.Formulaire.obtenirValeur(cs);
          /****** partie intéressante ******/
       });
     
       </script>
    </body>
    </html>
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par spawns Voir le message
    le code actuel ne fonctionne pas car si aucun radio n'ai coché cela valide tout de même le formulaire.
    Oui, et en regardant rapidement, je vois pas pourquoi

    Tu peux essayer autrement :
    en partant du principe qu'une fois un des radios coché, l'utilisateur n'a plus les moyens (sauf script adequat que tu ajouterais dans la page), de rendre tous les radios décochés, il suffit de gérer une variable booléenne (globale)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <head>
    <script type="text/javascript">
    var blnCoche = false;
    ...
    avec sur chaque radio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="blnCoche = true;"
    Ta fonction de vérif devrait être beaucoup plus simple

    EDIT : oui, je sais, il y a plus esthétique
    Mais plus simple ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  19. #19
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    cela ne fonctionne pas non plus,
    j'ai integré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="blnCoche = true;"
    dans mes radio
    et
    dans la fonction et même hors de la fonction ca ne marche pas on peut toujours valider sans que cela soit cocher

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par spawns Voir le message
    dans la fonction et même hors de la fonction ca ne marche pas on peut toujours valider sans que cela soit cocher
    Tu n'aurais pas oublié quelque chose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ctr()
    {
       return blnCoche;
    }
    C'est ce que je voulais dire par
    Citation Envoyé par E.Bzz Voir le message
    Ta fonction de vérif devrait être beaucoup plus simple


    EDIT : et c'est bien "hors de la fonction"

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Verifications d'usage avant envoi d'un formulaire
    Par EIN-LESER dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2009, 13h30
  2. Verification avant envoi send()
    Par Zapan dans le forum Réseau
    Réponses: 18
    Dernier message: 30/06/2006, 18h58
  3. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 22h50
  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