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

jQuery Discussion :

[Article] Créez une fenêtre modale avec CSS et jQuery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Profil pro
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Par défaut
    Bien le bonjour, d'abord merci pour ce tuto qui est vraiment fort utile.

    J'ai mis en place un tableau alimenté par une base de données.
    J'aimerais que sur la sélection d'une cellule du tableau la modale s'ouvre et récupère les info de la cellule.

    Malheureusement je n'y arrive pas.... Vu que ce n'est pas une nouvelle fenetre windows et donc pas de rechargement de page, je n'arrive pas a faire passer ma variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#?matri=<?php echo $donnees_messages['Nom'];?>" class="popup-light" data-popup-class="popup-block" data-popup-width="500px">
    Je pensais récupérer le "nom" puis via url, l'envoyer pour ensuite la récupérer en GET.

    Le but etant quand meme de ne pas recharger la page :/
    Donc une solution ? Ajax semble être le seul moyen non ?

  2. #2
    Membre averti
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster amateur

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Par défaut Pop-up qui apparait à l'ouverture de la page
    Bonjour,

    quant à moi j'aurais aimé que la pop-up s'ouvre à l'ouverture de ma page d'accueil pour donner des infos.
    je suis en développement d'un niveau assez rare qui est en dessous de très nul... j'ai donc essayé de façon basique de remplacer "display:none" par "display:block" sauf que la popup apparait décallée et je perds la croix pour fermer, et je n'ai pas le fond opaque...

    Bref, je suis perdu.

    Merci de vos lumières !!

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut
    @lorentdups Essaye de remplacer la fonction "click" par "fadeIn"

  4. #4
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut
    Petite erreur:

    Dans le tuto je lis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            //Effet fade-in du fond opaque
            $('body').append(''); //Ajout du fond opaque noir
    Et le fond noir n'apparaît pas.

    Dans le code utilisé dans mon browser (la source) le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            //Effet fade-in du fond opaque
            $('body').append('<div id="fade"></div>'); //Ajout du fond opaque noir
    Et effectivement ça marche mieux...


    Idem avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $('#' + popID).fadeIn().css({
                'width': Number(popWidth)
            })
                    .prepend('');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           $('#' + popID).fadeIn().css({
                'width': Number(popWidth)
            })
                    .prepend('<a href="#" class="close"><img src="close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 20
    Par défaut
    Salut

    Je rejoins lvr pour sa remarque sauf que quand je vérifie le site avec le validateur, ça m'indique 2 erreurs:
    line 167 column 97 - Erreur: document type does not allow element "a" here
    line 180 column 34 - Erreur: document type does not allow element "div" here
    Je parle toujours du code source de la demo.

    Et puis concernant la méthode live utilisée vers la fin du code js, ça ne marche pas avec la nouvelle version de jQuery. J'ai dû charger la même version utilisé dans le tuto, à savoir: jQuery-1.4.1

  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
    Effectivement, le code jQuery de l'article n'est pas compatible avec les versions récentes de jQuery.
    D'autre part, les code HTML était sémantiquement faux.

    Une mise à jour de l'article a donc été faite passant l'exemple en HTML5 et rendant le code jQuery compatible avec les dernières versions.
    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
    Invité de passage
    Profil pro
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Par défaut
    Bonjour à tous,
    déjà merci pour ce tuto qui est super.

    Alors moi j'ai mis un formulaire d'inscription dans ma fenêtre et j'aimerais savoir comment afficher les messages d'erreur des tests en javascript quand la personne remplie le formulaire. Je peux faire des alert() mais ce n'est pas très élégant, ça fait pop up sur pop up. j'aimerais savoir si c'est possible d'écrire dans la pop up.

    Merci pour votre aide


    edit: j'ai trouvé une solution : creer une <div id="erreur"> </div> avec rien dedans et dans la fonction javascript mettre document.getElementById('erreur').innerHTML = "Veuillez remplir correctement tous les champs *";

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Par défaut Petite amélioration
    Bon, j'ai voulu utiliser plusieurs popup et commander la fermeture de la popup ouverte en ouvrant une nouvelle.

    voici le bout de code à rajouter dans le jquery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //close pop up id
    $('a.popclose').on('click', function() {
    	var popID = $(this).data('close'); //Trouver la pop-up correspondante
    	$('#' + popID).fadeOut();
    	return false;
    });

    et rajouter data-close="id de la popup" dans le lien et
    popclose dans la class class=" popclose poplight"

    ex :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" data-width="450" data-rel="id popup2" data-close="id popup1" class="popclose poplight">mon texte</a>


    Bon et voici le code jquery complet après qqles modifs et bugs d'affichage trouvé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
    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
    jQuery(function($){
    	//Lorsque vous cliquez sur un lien de la classe poplight
    	$('a.poplight').on('click', function() {
    		var popID = $(this).data('rel'); //Trouver la pop-up correspondante
    		var popWidth = $(this).data('width'); //Trouver la largeur
     
    		//Faire apparaitre la pop-up et ajouter le bouton de fermeture
    		$('#' + popID).fadeIn().css({ 'width': popWidth}).prepend('<a href="#" class="close'+popID+'"><img src="/scripts/jquery/popuplight/close_pop.png" class="btn_close"/></a>');
     
    		//Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
    		var popMargTop = ($('#' + popID).height() + 80) / 2;
    		var popMargLeft = ($('#' + popID).width() + 80) / 2;
     
    		//Apply Margin to Popup
    		$('#' + popID).css({ 
    			'margin-top' : -popMargTop,
    			'margin-left' : -popMargLeft
    		});
     
    		//Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues d'anciennes versions de IE
    		$('body').append('<div id="fade"></div>');
    		$('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
     
    	//Close Popups and Fade Layer
    	$('body').on('click', 'a.close'+popID+', #fade', function() { //Au clic sur le body...
    		$('#fade , .popup_block').fadeOut(function() {
    			$('#fade, a.close'+popID+'').remove();  
    	}); //...ils disparaissent ensemble
     
     
    		return false;
    	});
    		return false;
    	});
     
    		//close pop up id
    	$('a.popclose').on('click', function() {
    		var popID = $(this).data('close');   //Trouver la pop-up correspondante
    		$('#' + popID).fadeOut(function() {
    			$('a.close'+popID+'').remove();  
    	});
     
    		return false;
    	});
     
    });



    Allez, bizzzzzzzzzz! ^^

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Bonjour,

    J'ai créé le popup et il apparaît bien dans ma fenêtre mais comment fait-on pour que l'usager clique sur le X pour fermer le popup car présentement si je clique n'importe ou dans la fenêtre (sauf dans le popup) le popup se ferme.

    Merci de me réponsre.

  10. #10
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut
    Citation Envoyé par lavm01 Voir le message
    Bonjour,

    J'ai créé le popup et il apparaît bien dans ma fenêtre mais comment fait-on pour que l'usager clique sur le X pour fermer le popup car présentement si je clique n'importe ou dans la fenêtre (sauf dans le popup) le popup se ferme.

    Merci de me réponsre.
    C'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Fermeture de la pop-up et du fond
    $('a.close, #fade').live('click', function() { //Au clic sur le bouton ou sur le calque...
    	$('#fade , .popup_block').fadeOut(function() {
    		$('#fade, a.close').remove();  //...ils disparaissent ensemble
    	});
    	return false;
    });
    Dans $('#fade , .popup_block').live('click', function(), le "#fade" dit que si l'utilisateur click sur le fond alors il doit faire le fadeOut puis la suppression du fond et de la popup.

  11. #11
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Merci pour ce joli popup, je l'ai intégré à un de mes sites.

    Question 1): est-il possible de mettre le bouton (croix) de fermeture au milieu de la popup (en la laissant à droite) au lieu d'en haut ?

    Question 2) Est-il possible d'ajouter une barre de défilement ?

    Merci d'avance pour l'aide.

    bee

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut appel de cette fenetre jquery via php
    Bonjour,

    pardonnez moi de remonter ce post mais j'ai une question toute bête, y a t il un moyen de faire appel à cette fonction en php, j'aimerai l'utiliser pour confirmer une action après requete, je souhaiterai faire appel à cette fenêtre automatiquement via un code php mais je ne parviens pas à la traduire vu mon niveau très moyen en javascripts ?

    merci d'avance

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Par défaut
    voilà une réponse juste après un teste d'une adresse en php avec jquery

    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
    $motif_adresse ='/^[a-z- ]{5,80}$/i';
    if(!preg_match($motif_adresse,$adresse))
    {
    	echo' <script>
        $(document).ready(function() {
        $("#dialog").dialog({ 
    	minWidth: 400 ,
    	height: 120,
    	position: [400,250],                      
    	buttons: { "Ok": function() { 
    	history.go();
        return false; { $(this).dialog("close"); } } }
      	});	});
        </script>';
    	echo'<div align="center" id="dialog" title="Erreur">Votre adresse est incorrect uniquement des lettres !!!!</div>';	
    	include("cssstyle/bas.php");
    	$add=0;	
    	return FALSE;			 
        }
    else{
    	$adresse;
        }

  14. #14
    Invité de passage
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Par défaut Fermeture à l'aide d'un bouton
    Bonjour à toutes et à tous,

    tout d'abord merci pour ce petit tuto qui est bien utile pour une débutante comme moi.
    Tout fonctionne parfaitement mais je souhaiterais que la fenêtre se ferme seulement au clic sur l'image du bouton et non sur la fenêtre elle-même. J'ai bien vu ce message :"Si nous avions souhaité que seuls les clics sur les croix ferment les popups, alors nous aurions pu les encapsuler dans un élément commun et affecter la délégation sur cet élément." mais cela reste du chinois pour moi. Si une âme charitable voulait bien m'aider cela m'arrangerait beaucoup.
    Je vous souhaite une bonne journée!
    Ps: je suis restée sur la première version.

Discussions similaires

  1. [Article] Créer une fenêtre modale avec CSS 3
    Par Bovino dans le forum Publications (X)HTML et CSS
    Réponses: 7
    Dernier message: 24/02/2018, 16h25
  2. Réponses: 3
    Dernier message: 07/09/2011, 12h28

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