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

Bibliothèques & Frameworks Discussion :

Checkbox avec mootools [MooTools]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Checkbox avec mootools
    Bonjour, j'ai un petit soucis avec Mootools.

    J'ai une case à cocher sur laquelle je souhaite que lorsque je clique, il apparait des options, je veux le faire avec Mootools question d'avoir un effet agréable. J'ai presque réussi en cherchant sur internet, sauf que ça fait le contraire de ce que je veux.
    Voici mon exemple
    Dans la dernière option : Changement de cadradage noir à doré : 35.00$

    Premièrement, je veux que l'image soit caché en chargeant la page.
    Deuxièmement, je veux que les options s'affichent lorsque je clique sur la case à cocher.
    Troisièmement, je veux que les options se cachent si je décoche la case à cocher.

    Javascript
    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
     
    //when the dom is ready...
    window.addEvent('domready', function() {
      //time to implement fancy show / hide
      Element.implement({
        //implement show
        fancyShow: function() {
          this.fade('in');
        },
        //implement hide
        fancyHide: function() {
          this.fade('out');
        }
      });
    });
    html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <input onclick="javascript:$('blove2').fancyHide();" type="checkbox" name="checkbox3" id="checkbox3">
              <label for="checkbox3">Changement de cadradage noir à doré : 35.00$</label>
              	<p>
                  <img src="../images/lignenoire.jpg" id="blove2" />
                </p>
    J'ai réussi à le faire sur l'option : Inscription sur la porcelaine (nom, date ... ) : 35.00$, sauf que ce n'est pas aussi beau qu'avec Mootools.

    Merci pour votre aide.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    tu pourrais avoir cette approche
    Code html : 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
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Precious Souvenir</title>
    <script src="../javascript/mootools-core-1.4.5.js"></script>
    <script src="../javascript/mootools-more-1.4.0.1.js"></script>
    <script>
    //when the dom is ready...
    window.addEvent('domready', function() {
      // fonction sur le clic
      $('checkbox3').addEvent('click', function(){
        // action suivant état de la checkbox
        this.checked ? $('blove2').fade('in') : $('blove2').fade('out');
      });
      // masque l'image
      $('blove2').fade('hide');
    });
    </script>
    </head>
    <body>
      <input type="checkbox" name="checkbox3" id="checkbox3">
      <label for="checkbox3">Changement de cadradage noir à doré : 35.00$</label>
      <p><img src="../images/lignenoire.jpg" id="blove2"/></p>
    </body>
    </html>

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci, ça fonctionne. Cependant ça fonctionne seulement sur l'image. Je vais devoir l'appliquer sur des div, qu'est-ce que je dois modifier?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    C'est bon, je devais simplement déplacer mon id=blove2.

    Autre question, il reste un espace que je souhaite remplir.
    Donc en dessous de la ligne : Changement de cadradage noir à doré : 35.00$
    Il y a l'option : Commande urgente (moins de 10 jours) : 35.00$
    Entre les deux, je voudrais supprimer cet espace lorsque la boîte n'est pas coché.

    Merci

  5. #5
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Soit tu passes par du CSS pour mettre en forme ton paragraphe, soit tu déplaces l'id sur la balise <p></p> et non plus la balise image.
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Oui je l'ai déplacé et ça fonctionne.

    Le problème maintenant est avec la fonction Fx.Slide

    Exemple ici

    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
     
    window.addEvent('domready', function() {
      // fonction sur le clic
    	  var mySlide = new Fx.Slide('blove2').show().toggle().chain(function(){
    	  });
     
     
    	  $('checkbox3').addEvent('click', function(){
    		// action suivant état de la checkbox
    		this.checked ? $('blove2').fade('in') : $('blove2').fade('out').hide().toggle();
     
    		// Hides the Element, then brings it back in with toggle and finally alerts
    		// when complete:
    		var mySlide = new Fx.Slide('blove2').hide().toggle().chain(function(){
    	  });
      });
     
      // masque l'image
      $('blove2').fade('hide');
     
      });
    Quand je clique sur la case à cocher, ça s'affiche très bien, mais lorsque je la décoche, ça ne fonctionne pas comme je le veux, l'espace reste en place. J'ai essayer plusieurs choses, rien ne marche pour le moment.

    Merci pour votre aide.

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    La méthode fade() joue sur l'opacité mais l'élément reste dans le flux ce qui fait qu'il occupe l'espace de ses dimensions à l'écran, visiblement cela ne te convient pas.

    Une autre approche est de faire apparaître ton image par agrandissement, pour cela tu peux utiliser la méthode tween(), mais il va te falloir récupérer ces dimensions et les stocker avant de la masquer en la mettant en width:0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $('blove2').originalWidth = $('blove2').getStyle('width'); // récup. de la largeur
      $('blove2').setStyle('width', 0); // on la masque
    maintenant dans la fonction on utilise la méthode tween().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $('checkbox3').addEvent('click', function(){
        oElem = $('blove2');
        this.checked ? oElem.tween('width', oElem.originalWidth) : oElem.tween('width',0);
      });
    Maintenant pour ton INPUT tu peux suivre la même démarche, mais en jouant sur la hauteur du P qui encapsulera celui ci.

    exemple de rendu possible:
    Code html : 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
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <base href="http://precioussouvenir.com/2013/fr/">
    <title>Precious Souvenir</title>
    <link href="../style/styleWeb.css" rel="stylesheet" type="text/css">
    <script src="../javascript/mootools-core-1.4.5.js"></script>
    <script src="../javascript/mootools-more-1.4.0.1.js"></script>
    <script>
    window.addEvent('domready', function() {
      // fonction sur le clic
      $('checkbox3').addEvent('click', function(){
        oElem = $('blove2');
        this.checked ? oElem.tween('width', oElem.originalWidth) : oElem.tween('width',0);
      });
     
      $('checkbox2').addEvent('click', function(){
        var oElem = $('p_text');
        this.checked ? oElem.tween('height', oElem.originalHeight) : oElem.tween('height',0);
      });
     
      // init des éléments
      $('blove2').originalWidth = $('blove2').getStyle('width');
      $('blove2').setStyle('width', 0);
     
      $('p_text').originalHeight = $('p_text').getStyle('height');
      $('p_text').setStyles({
        'height': 0,
        'overflow': 'hidden'
      });
     
    });
    </script>
    </head>
    <body>
    <div id="main">
      <input type="checkbox" name="checkbox2" id="checkbox2">
      <label for="checkbox2">Inscription sur la porcelaine (nom, date ... ) : 35.00$<br></label>
      <p id="p_text"><input type="text" value="Entrez votre inscription" name="textfield" id="textfield"></p>
     
      <input type="checkbox" name="checkbox3" id="checkbox3">
      <label for="checkbox3">Changement de cadradage noir à doré : 35.00$</label>
      <p><img src="../images/lignenoire.jpg" id="blove2"/></p>
     
      <input type="checkbox" id="rush" name="rush">
      <label for="rush">Commande urgente (moins de 10 jours) : 35.00$</label>
    </div>
    </body>
    </html>


    Attention les identifiants ID dans ta page ne sont pas cohérents!

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    J'ai réussi, le seul petit problème est qu'il y a une animation lors du chargement de la page.

    Voici le code utilisé :

    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
    window.addEvent('domready', function() {
      // fonction sur le clic
     
      	//Initialiser pour que ce soit caché en chargement la page
    	  var mySlide = new Fx.Slide('blove2').show().toggle().chain(function(){
     
    	  });
     
     
      		//Fonction du checkbox
    	  $('checkbox3').addEvent('click', function(){
     
     
    		// action suivant état de la checkbox
    		this.checked ? $('blove2').fade('in').show() : $('blove2').fade('in').toggle();
     
     
    		// Cache les éléments, attention, la fonction hide() annule tout animation
    		var mySlide = new Fx.Slide('blove2').toggle().chain(function(){
     
    	  });
     
      });
     
      // masque l'image
      $('blove2').fade('hide').toggle();
     
     
    });
    le html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="checkbox" name="checkbox3" id="checkbox3">
              <label for="checkbox3" class="smallLabel">Changement de cadradage noir à doré : 35.00$</label>
              <div id="blove2" style="visibility:hidden;">Le contenue de votre div</div>

  9. #9
    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
    Ouille. Vous mélangez deux techniques. Ce n'est pas l'idéal. Utilisez soit le fade soit le show/hide.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    J'imagine, mais comme je ne suis pas un pro et que ça marche, je fais avec. As-tu une autre idée?

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    As-tu une autre idée?
    je trouvais sympa l'approche que je t’ai mis

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

Discussions similaires

  1. probleme de cochage de checkbox avec liste sous liste etc.
    Par satan.malin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2006, 21h49
  2. Réponses: 1
    Dernier message: 30/11/2005, 14h57
  3. checked d'un checkbox avec nom dynamique
    Par Sylvain245 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/11/2005, 11h28
  4. [struts] mémorisation d'une checkbox avec cookie
    Par rocco dans le forum Struts 1
    Réponses: 3
    Dernier message: 22/04/2004, 12h39

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