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 :

Controle de formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 69
    Par défaut Controle de formulaire
    Bonjour,
    Besoin d'un coup de pouce
    j'ai fait un formulaire à choix multiple, et je souhaite dégriser le bouton de validation seulement lorsque toutes les questions à choix multiple ont été renseigné, j'y arrive en faisant un test avec des champs de type texte et checkbox, mais je n'y arrive pas avec les boutons radio, sans doute parce que pour une question, il y a 4 choix multiples, et j'ai l'impression qu'il faudrait ques les 4 choix soient cochés pour le dégriser.
    Donc comment faire pour prendre en compte dans le controle qu'un bouton radio sur les 4


    Dans le HEAD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    <script type='text/javascript'>
    function ChangeStatut(formulaire) {
    if((formulaire.elements['ques_accueil'].checked==true)) && (formulaire.elements['ques_accueil'][2].checked==true)) && (formulaire.elements['ques_accueil'][3].checked==true)) && (formulaire.elements['ques_accueil'][4].checked==true)) && (formulaire.elements['regagree'].checked) && (formulaire.elements['pseudo'].value.length > 0)  && (formulaire.elements['email'].value.length > 0) && (formulaire.elements['motdepasse'].value.length > 0))
    {formulaire.elements['validation'].disabled = false }
    }
    </script>



    Le morceau du formulaire:
    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
     
     
    <form method="post" name="test">
    Pseudo : <input type="text" name="pseudo" onclick="ChangeStatut(this.form)" /><br /><br />
    Mot de passe : <input type="password" name="motdepasse" onclick="ChangeStatut(this.form)" />
    <br /><br />
    E-mail : <input type="text" name="email" onclick="ChangeStatut(this.form)" /><br /><br />
     
    <br /><br />
     
    Accueil téléphonique:
    <INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="tres mauvais" />
    <INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="mauvais" />
    <INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="bon" />
    <INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="tres bon" />
     
     
     
     
    <br /><br />
     
    <input type="checkbox" name="regagree" value="valeur" onclick="ChangeStatut(this.form)" /> J'accepte <br /><br />
    <input type="submit" name="validation" value="S'inscrire" disabled="disabled" />
     
    </form>
    Si quelqu'un connait la solution pour gérer le controle desbouton radio comme pour le controle du type texte
    Merci

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    || au lieu de && ?
    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 !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 69
    Par défaut
    Merci pour votre réponse, j'ai essayé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type='text/javascript'>
    function ChangeStatut(formulaire) {
    if(((formulaire.elements['ques_accueil'].checked==true)) || (formulaire.elements['ques_accueil'][2].checked==true)) || (formulaire.elements['ques_accueil'][3].checked==true)) || (formulaire.elements['ques_accueil'][4].checked==true))) && (formulaire.elements['regagree'].checked) && (formulaire.elements['pseudo'].value.length > 0)  && (formulaire.elements['email'].value.length > 0) && (formulaire.elements['motdepasse'].value.length > 0))
    {formulaire.elements['validation'].disabled = false }
    }
    </script>
    Mais ca ne marche pas, je ne suis pas certain que "formulaire.elements['ques_accueil'][2].checked==true" soit la bonne syntaxe

  4. #4
    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
    Citation Envoyé par christophe_s46 Voir le message
    Mais ca ne marche pas, je ne suis pas certain que "formulaire.elements['ques_accueil'][2].checked==true" soit la bonne syntaxe
    Euh... non, je dirais plutôt que c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (formulaire.elements['ques_accueil'].checked==true)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (formulaire.elements['ques_accueil'][4].checked==true)
    Le premier correspond auquel des 4 ? (Ca peut te sembler évident, mais pour un naviagateur, c'est une autre histoire...) quant au 2e, sachant qu'un tableau JavaScript commence à l'index 0, l'index 4 correspond au 5e élément... qui n'existe pas
    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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 69
    Par défaut re
    Bonsoir, et merci
    J'ai modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type='text/javascript'>
    function ChangeStatut(formulaire) {
    if(((formulaire.elements['ques_accueil'][0].checked==true)) || (formulaire.elements['ques_accueil'][1].checked==true)) || (formulaire.elements['ques_accueil'][2].checked==true)) || (formulaire.elements['ques_accueil'][3].checked==true))) && (formulaire.elements['regagree'].checked) && (formulaire.elements['pseudo'].value.length > 0)  && (formulaire.elements['email'].value.length > 0) && (formulaire.elements['motdepasse'].value.length > 0))
    {formulaire.elements['validation'].disabled = false }
    }
    </script>
    Mais ca ne marche toujours pas, si je mets qu'un bouton radio ca marche mais à partir de 2 ca ne fonctionne plus, ca coince pour différencier les boutons radios je pense, mais je ne sais pas comment faire
    Merci

  6. #6
    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
    Ouais, pas terrible cette syntaxe, mieux vaut passer par getElementsByName.
    Pour un seul radio coché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var a_tester = document.getElementsByName('ques_accueil');
    var coche = 0;
    for(var i=0; i<a_tester.length; i++){
        if(a_tester[i].checked){coche++}
    }
    formulaire.elements['validation'].disabled = coche != 1;
    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

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut Adapte
    Adapte la solution proposée par Bovino (si j'ai bien compris ce que tu veux faire...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    function valideOptions(questionOption) {
        var a_tester = document.getElementsByName(questionOption);
        for(var i=0; i<a_tester.length; i++){
             if(a_tester[i].checked) return true;
        }
        return false;
    }
     
    function ChangeStatut(formulaire) {
        formulaire.elements['validation'].disabled =  (!valideOptions('ques_accueil') || !valideOptions('ques_autre'));
    }

    ERE

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 69
    Par défaut Bonjour
    Bonjour,
    Emmanuel, merci pour votre réponse et votre aide,
    J'ai inséré le code suivant dans la page, et lors de l'appuie sur le bouton envoyer et sans cocher les cases, il y a aucune alerte précisant qu'aucun choix a été effectuer, il doit me manque dans le formulaire l'appel de la fonction pour effectuer le controle,
    Si vous pouviez m'aider
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <script type='text/javascript'>
    function valideOptions(questionOption) {
        var a_tester = document.getElementsByName(questionOption);
        for(var i=0; i<a_tester.length; i++){
             if(a_tester[i].checked) return true;
        }
        return false;
    }
     
    function ChangeStatut(formulaire) {
        formulaire.elements['validation'].disabled =  (!valideOptions('ques_accueil') || !valideOptions('ques_autre'));
    }
    </script>

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut Exemple
    Ci-dessous le code que je te propose: c'est une possibilité vite faite mais fonctionnelle que tu peux (dois ?) adapter. J'ai essayé de conserver la démarche que tu avais initiée.

    Tant que les champs ne sont pas remplis le bouton est désactivé.

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<script type="text/javascript">
    		function valideOptions(questionOption) {
    		    var a_tester = document.getElementsByName(questionOption);
    		    for(var i=0; i<a_tester.length; i++){
    		         if(a_tester[i].checked) return true;
    		    }
    		    return false;
    		}
     
    		function ChangeStatut(frm) {
    		    frm.elements['validation'].disabled =  (
                                       !valideOptions('ques_accueil') 
                                   || !valideOptions('ques_adeq')
                                   || (frm.pseudo.value.length==0)
                                   || (frm.motdepasse.value.length==0)
                                   || (frm.email.value.length==0)
                                   || (frm.regagree.checked==false));
    		}
    	</script>
     
     
    	<form method="post" name="test">
    		Pseudo : <input type="text" name="pseudo" onkeyup="ChangeStatut(this.form)" onblur="ChangeStatut(this.form)" /><br /><br />
    		Mot de passe : <input type="password" name="motdepasse" onkeyup="ChangeStatut(this.form)" onblur="ChangeStatut(this.form)" />
    		<br /><br />
    		E-mail : <input type="text" name="email" onkeyup="ChangeStatut(this.form)" onblur="ChangeStatut(this.form)" /><br /><br />
     
    		<br /><br />
     
    		Accueil téléphonique:
    		<INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="tres mauvais" />
    		<INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="mauvais" />
    		<INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="bon" />
    		<INPUT type="radio" name="ques_accueil" onclick="ChangeStatut(this.form)" value="tres bon" />
    		<br /><br />
     
    		Adéquation client:
    		<INPUT type="radio" name="ques_adeq" onclick="ChangeStatut(this.form)" value="tres mauvais" />
    		<INPUT type="radio" name="ques_adeq" onclick="ChangeStatut(this.form)" value="mauvais" />
    		<INPUT type="radio" name="ques_adeq" onclick="ChangeStatut(this.form)" value="bon" />
    		<INPUT type="radio" name="ques_adeq" onclick="ChangeStatut(this.form)" value="tres bon" />
    		<br /><br />
     
    	<input type="checkbox" name="regagree" value="valeur" onclick="ChangeStatut(this.form)" /> J'accepte <br /><br />
    	<input type="submit" name="validation" value="S'inscrire" disabled="disabled" />
     
    	</form>
    </body>
    </html>
    ERE

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 69
    Par défaut Ca marche
    Merci beaucoup, ca marche très bien

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

Discussions similaires

  1. Controler un formulaire
    Par Fleep dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 04/05/2007, 09h58
  2. control de formulaire qui marche avec IE et non mozilla
    Par epeichette dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/03/2005, 16h47
  3. controle de formulaire
    Par Anonymous dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/10/2004, 09h21
  4. Controle de formulaire valid XHTML 1.1
    Par StagiaireEnGalère dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2004, 22h15
  5. [jsp]controles des formulaires servlet ou javascript ?
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 05/07/2004, 14h46

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