Partage
  • Partager sur Facebook
  • Partager sur Twitter

Case à cocher grisant un bouton

Quand la dites case n'est pas coché. :p

    24 mars 2009 à 19:37:55

    Plop. :)

    J'ai un soucis en JS.

    Dans mon formulaire d'inscription, j'aimerais mettre une case à cocher qui grise le bouton s'inscrire si elle n'est pas coché. J'ai utiliser ce script :


    <script type="text/javascript">
    function ChangeStatut(formulaire) {
    if(formulaire.regagree.checked == true) {formulaire.validation.disabled = false }
    if(formulaire.regagree.checked == false) {formulaire.validation.disabled = true }
    }
    </script>
    



    <p><input type="checkbox" name="regagree" value="valeur" onClick="ChangeStatut(this.form)" /> 
           <span class="redirection">J'accepte le règlement</span></p>
         <p>
        <input type="submit" name="validation" value="S'enregistrer" disabled /></p>
    


    Avec ce script, "l'animation" marche bien, mais quand je clique sur "S'enregistrer", ça me redirige vers ma page inscription. :/ En faisant quelques tests, je me suis aperçu que tout rentrait dans l'ordre quand j'enlevais "disabled". Le problème, c'est que sans disabled, le bouton n'est pas grisé... :/

    Vous avez une solution ? :)
    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2009 à 20:14:29

      Je suis pas du tout expert mais moi j'aurais fait:

      <script type="text/javascript">
      function ChangeStatut(formulaire) 
      {
        if(formulaire.regagree.checked == true) 
        {
          formulaire.validation.disabled = false ;
        }
        else if(formulaire.regagree.checked == false)
        {
          formulaire.validation.disabled = true ;
        }
      }
      </script>
      

      Voilà ma petite contribution ^^

      EDIT: Lol j'avais pas du tout lu le reste de ton message mais bon je laisse quand même ma contribution :p
      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2009 à 20:48:01

        Lol merci quand même de t'être intéressé. :p
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2009 à 1:00:33

          OWBORDAYL § Honnêtement, tu as vraiment bossé sur ton code ou bien tu as fait ça à l'arrache ? Parce que là o_O !

          Bon, pas grave, on peut toujours tout résoudre, on va y aller par étapes. On commence par le JS :

          • Une ligne de commande se termine toujours par un point-virgule !
          • Plutôt que de mettre deux if, on utilise if et else.
          • Pas besoin d'écrire == true, si on ne le met alors ça fait exactement la même action.


          Si tu suis ce que j'ai dit alors ton code Javascript devrait ressembler à ceci :

          function ChangeStatut(formulaire) {
            if(formulaire.regagree.checked) {
              formulaire.validation.disabled = false;
            } else {
              formulaire.validation.disabled = true;
            }
          }
          


          Tu remarqueras que j'ai indenté le code, il faut toujours faire ça pour que ce soit lisible, y compris avec ton HTML ;) .

          On vient justement à ce dernier. Alors là il y a pas mal de problèmes... Tu essayes d'accéder à un formulaire qui n'existe pas... Tu n'as pas créé de balise <form /> et pourtant tu veux y accéder, c'est zarb ça §
          Autre chose, c'est quoi ce disabled tout moche qui ne sert à rien ? Un attribut est censé être défini, il ne doit pas rester comme ça tout seul comme un con.
          Et une dernière chose : Pourquoi donner une valeur à une CheckBox ? Ça ne sert à rien... il ne la prend pas en compte.

          Bref, si tu suis les conseils ci-dessus, ça devrait donner ceci :

          <form>
            <input type="checkbox" name="regagree" onclick="ChangeStatut(this.parentNode)" />
            <span class="redirection">J'accepte le règlement</span>
            <br /><br />
            <input type="submit" name="validation" value="S'enregistrer" disabled="disabled" />
          </form>
          


          Une dernière chose, j'utilise un this.parentNode pour la fonction, pourquoi ? Eh bien parce que déjà this.form est faux car là tu essayes de cibler un formulaire qui se "situerait" dans la CheckBox, donc impossible. En effet, le this représente la CheckBox dans ce cas là. Comme nous voulons viser l'élément qui contient la CheckBox il nous faut alors viser l'élément parent, ce qui ce fait grâce à parentNode.
          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2009 à 10:48:14

            Merci de m'avoir aider. ;)

            Je teste ça ce soir, là je suis en cours.

            Je ne te cache pas que j'ai pompé ce script sur internet. :p Je sais c'est mal... Mais comme je débute en JS... :/

            Merci bien en tout cas. :) La suite ce soir.

            Edit : Bon, j'ai appliquer ton code, mais le soucis et que maintenant, je ne peux plus cocher la case. :D
            Quand je clique sur la case, rien ne se passe... :/

            :D
            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2009 à 21:40:51

              Aucun problème pour ma part mais je crois savoir d'où ça vient pour toi. Je parie que tu as mis le code dans une page HTML sans Doctype, ensuite tu as testé sous IE et là : c'est le drame !

              Bref, c'est normal. IE est un navigateur très peu tolérant (même dans la version 8), si il n'a pas de Doctype de déclaré alors énormément de choses ne fonctionneront pas. Dans un sens on ne peut pas lui en vouloir, c'est même un bon point ! Mais pour faire de rapides tests c'est pas ce qu'il y a de mieux. ^^'

              Au passage, essaye de faire toi-même tes codes, surtout pour des choses aussi simples que ça. Parce que là tu as vraiment choppé un truc de merde par excellence (comme on en voit souvent sur le web malheureusement).
              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2009 à 22:11:48

                Avec beaucoup de retard, merci ça marche. ;)
                • Partager sur Facebook
                • Partager sur Twitter

                Case à cocher grisant un bouton

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown