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 :

conditions pour fonction alert


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut conditions pour fonction alert
    Bonjour,

    Je cherche à réaliser un contrôle de formulaire en javascript. Mon formulaire est composé des champs de type " radio " et textarea.
    Les différents champs ont tous le même nom ...
    J'aimerai donc réaliser un contrôle différents suivant le type du champs
    Le nom de mon champs est un numérique qui me renvoi donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     champs radio :<input type='radio' name='2' value=3 id='detail2' '> 
    textarea :<textarea name='3' rows='10' cols='70'>
    La fonction suivant contient un compteur qui incremente donc la valeur et me renvoi alors le nom du champs a contrôler.
    Je transmet à la variable " champs " le nom du champs à chaque incrementation.
    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
    function champsok(){ 
    // Ici debut de ma boucle pour incrementation
          champs = document.getElementById(1);
         if ( champs.tagName == "input" && champs.getAttribute("type") == "radio" ) {
             if (
                 (document.getElementsByName(1)[0].checked == false) && 
                 (document.getElementsByName(1)[1].checked == false) && 
                 (document.getElementsByName(1)[2].checked == false) && 
                 (document.getElementsByName(1)[3].checked == false) || 
                 (document.getElementsByName(1)[4].checked == false)
                 )
                 {alert("Veuillez tout remplir");return false;}
        }
        if ( champs.tagName == "textarea" && champs.value == "" ){
        alert("Veuillez tout remplir");return false;}
        }//ici fin de ma boucle d'incrementation
    }//fin fonction
    Je ne comprends psa pourquoi je n'arrive pas à verifier que mes champs soient bien saisit

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    getElementsByName ne fonctionne pas à priori. Je ne comprends pas ton test sur les boutons radios(des && et des ||), une solution facile avec les boutons radios est d'en cocher un par défaut, car pour le decocher il faudra en cocher un autre et cela évite une vérification.(C'est la que tous les anciens du forum s'insurgent contre ma stratégie )

    Enfin bref c'est pas très clair pour moi, tout ce petit pavé pour dire que je peux pas aider...A part mes remarques du début.

  3. #3
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    le name doit être du string

    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 !

  4. #4
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Déja merci de vos réponses aussi rapide !
    Je suis pas un pro en javascript, c'est sur que la fonction est perfectible .
    Comme j'ai plusieur bouton radio pour la meme question, ( soit 4 ou soit 5) donc je verifie si les 4 premiers ne sont pas cochés ( le 5eme étant pas obligatoire ... )

    Ce qui serait bien c'est que pour n'importe qu'elle question avec réponses de type radio avec 4 ou 5 bouton ou bien réponses avec type textarea, j'ai un contrôle qui verifie que la question soit répondu.

    ps: je viens de trouver une erreur qui ne corrige pas mon problème .. le nom de l'id est detail+incrementation et non pas l'incrementation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function champsok(){ 
     	 champs = document.getElementById('detail1');
    		 if ( champs.tagName == "input" && champs.getAttribute("type") == "radio" ){
    				  if((document.getElementsByName('1')[0].checked == false) && 
    					 (document.getElementsByName('1')[1].checked == false) && 
    					 (document.getElementsByName('1')[2].checked == false) && 
    					 (document.getElementsByName('1')[3].checked == false) || 
    					 (document.getElementsByName('1')[4].checked == false))
    				alert("Veuillez tout remplir");return false;	
    		 	}	}
    J'ai fais un test avec simplement un alert() dans la condition qui verifie mon type de champs ... mais une fois que je rajoute ma condition sur les boutons radio, mais impossible de valider le formulaire si un textarea est présent. " Et oai une textarea peut pas être checked "

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Ta vérification a donc un problème, si j'ai bien compris, tu controles soit 4 soit 5 boutons radios avec la même formule. Donc si tu te retrouves dans un cas avec 5 boutons radios, et que tu coches le 4ème ou le 5ème, ton code est sensé renvoyer que cette question n'a pas reçu de réponse.

  6. #6
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Oui je suis d'accord avec toi, c'est pourquoi j'ai mis pour le 5eme bouton un " OU " comme ca si un des 4 premier bouton ou le 5eme n'est pas coché .. je retourne le alert().
    Cela ne fonctionnerai pas si j'avais mis un " && " pour le dernier ... Dans se cas la condition me renverrais à chaque fois l'alerte puisque " un des 4 premier bouton et le 5eme n'est pas coché "

    Je pense pas me tromper dans ma logique, si ?

    Ce code fonctionne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     function champsok(){ 
     
         champs = document.getElementById('<?php echo "detail".$ic; ?>');
             if ( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" )
                    alert("Veuillez tout remplir");return false;    
     
     }

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    JE me suis mal exprimé je pense

    Pas facile à expliquer.

    Ce que je veux dire c'est que ton code équivaut à :

    (si 1,2,3,4 non cochés ou 5 non coché) message d'alerte.

    Donc d'après ma logique quoiqu'il arrive quand 5 est non coché, tu recois le message d'alerte(quelque soit la valeur de 1,2,3 et 4) ou alors quand 1 et 2 et 3 et 4 sont non cochés tu recois le message quelque soit la valeur de 5.

    Bon après relecture de ma premiere explication, ca ne voulait rien dire. J'espere que celle-ci est compréhensible.

  8. #8
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Ha ouai mince c'est vrai .. a trop réfléchir j'en perds mon raisonnement...
    Je vais retirer le 5eme bouton pour voir tout ca.

    Même ce code ne fonctionne pas. En faite des que je met la seconde condition, sa ne fonctionne pas, en cliquant sur mon submit sans cocher une réponse je valide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         champs = document.getElementById('<?php echo "detail".$ic; ?>');
             if ( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" ){
                      if ((document.getElementsByName('<?php echo $ic; ?>')[0].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[1].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[2].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[3].checked == false))             
                          alert("Veuillez tout remplir");return false;    
                     }  
     
            }

  9. #9
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Alors je suis a moitié heureux !!!

    Ce code fonctionne correctement ! Mais j'aimerais qu'on m'aide pour le cas ou j'ai une question à 5 boutons. Car si je selectionne le 5eme bouton, le code me renvoi l'alert... Et je ne sais pas trop comment faire la.
    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 champsok(){ 
     <?php 
     for ($ic=1; $ic<=$nbr; $ic++) { ?>
         champs = document.getElementById('<?php echo "detail".$ic; ?>');
             if ( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" ){
                      if ((document.getElementsByName('<?php echo $ic; ?>')[0].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[1].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[2].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[3].checked == false))             
                          {alert("Veuillez tout remplir");return false;}
            }
    <?php } ?> // fin boucle condition for
    }

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Tu peux remplacer ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     if ((document.getElementsByName('<?php echo $ic; ?>')[0].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[1].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[2].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[3].checked == false))             
                          {alert("Veuillez tout remplir");return false;}
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var total=0;
    for (i=0;i<document.getElementsByName('<?php echo $ic; ?>').length;i++)
    {
         if (document.getElementsByName('<?php echo $ic; ?>')[i].checked == false)
         {
               total=total++;
         }else{
                break;
         }
    }
    if (total!=document.getElementsByName('<?php echo $ic; ?>').length)
    {alert("Veuillez tout remplir");return false;}
    Ca pourrait bien fonctionner, aucune certitude au niveau de la condition length sur le document.getElementsByName...

  11. #11
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    J'ai mis en place ton code, mais il me valide quand même le formulaire apres avoir cliquer sur le submit.
    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
     function champsok(){ 
     <?php 
     for ($ic=1; $ic<=$nbr; $ic++) { ?>
         champs = document.getElementById('<?php echo "detail".$ic; ?>');
             if ( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" ){
                    var total=0;
                    for (i=0;i<document.getElementsByName('<?php echo $ic; ?>').length;i++){
                         if (document.getElementsByName('<?php echo $ic; ?>')[i].checked == false){
                            total=total++;
                         }else{
                               break;
                         }
                    }
                    if (total!=document.getElementsByName('<?php echo $ic; ?>').length){
                    alert("Veuillez tout remplir");return false;}
     
    <?php } ?> // fin boucle condition for
         }
    Mais j'apprécis le compteur, je n'y avais pas pensé.

  12. #12
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Je peux pas simplement verifier que mon element global est à un moment checked ?

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsById('<?php echo $ic; ?>')checked == true
    Au lieu de verifier à chaque fois sur chaque bouton si il à été validé ou non ?

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Je ne crois pas non, pour moi la meilleure solution consiste à cocher par défaut un bouton radio, de cette manière, tu auras toujours une des propositions cochées, plus besoin de les vérifier. Solution de facilité en fait.

  14. #14
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Oui, mais le problème c'est que si la personne oubli de répondre. La réponse sera prise en compte pour une valeure par défaut... JE dois obliger les gens à répondre.

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Citation Envoyé par Dam1en Voir le message
    Oui, mais le problème c'est que si la personne oublient de répondre. La réponse sera prise en compte pour une valeure par défaut.
    Exact, elle n'a qu'a pas oublier . En général ce que je déteste plus que les formulaires ou il faut répondre aux endroits accompagnés d'une étoile ce sont les formulaires où l'on doit donner une réponse à chaque question sinon on se voit recharger la même page encore et encore...

  16. #16
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    Le but de le faire en javascript c'est justement que la page ne se raffraichit pas et donc les données restes selectionnées.
    Il y a pas une fonction permettant de verifier que "document.getElementsByName(1)[4].checked "existe ?
    ça me faciliterais la vie ...

  17. #17
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    on peut voir le code html de la balise form ?
    le onsubmit ?
    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 !

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Citation Envoyé par Dam1en Voir le message
    Le but de le faire en javascript c'est justement que la page ne se raffraichit pas et donc les données restes selectionnées.
    Il y a pas une fonction permettant de verifier que "document.getElementsByName(1)[4].checked "existe ?
    ça me faciliterais la vie ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert (document.getElementsByName(1)[4].checked);
    ?

  19. #19
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Par défaut
    J'ai remodifié mon code ... J'ai rajouté dans mon formulaire un champs hidden qui me récupere le nombre de boutons par questions...

    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
     
     function champsok(){ 
     <?php 
     for ($ic=1; $ic<=$nbr; $ic++) { ?>
         champs = document.getElementById('<?php echo "detail".$ic; ?>');
         var valeur=document.getElementsByName('cnt<?php echo $ic;?>;');
     
             if ( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" && valeur == 4){
                      if ((document.getElementsByName('<?php echo $ic; ?>')[0].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[1].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[2].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[3].checked == false))             
                          {alert("Veuillez remplir tout les champs");return false;}
            }
             if( champs.tagName == "INPUT" && champs.getAttribute("type") == "radio" && valeur == 5){
                      if ((document.getElementsByName('<?php echo $ic; ?>')[0].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[1].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[2].checked == false) && 
                         (document.getElementsByName('<?php echo $ic; ?>')[4].checked == false) && 
                          (document.getElementsByName('<?php echo $ic; ?>')[3].checked == false))             
                          {alert("Veuillez remplir tout les champs");return false;}
            }  
    <?php } ?> // fin boucle condition for
         }
    Mais je ne sais pas ce qui peut foirer dans mon script la

  20. #20
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    y'a pas de return 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 !

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

Discussions similaires

  1. [XL-2007] VBA : ajout fonction pour une alerte
    Par Serenay dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2015, 08h55
  2. Réponses: 2
    Dernier message: 26/03/2015, 10h29
  3. Réponses: 2
    Dernier message: 30/08/2009, 19h42
  4. Réponses: 1
    Dernier message: 14/08/2009, 12h19
  5. une condition pour fonction SUM
    Par backdraf dans le forum Développement
    Réponses: 2
    Dernier message: 24/06/2009, 14h41

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