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 :

création d'une dialogbox


Sujet :

jQuery

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 860
    Par défaut création d'une dialogbox
    bonjour,

    je me suis fait une petite fonction qui affiche une dialogBox paramêtrable avec deux boutons (oui/non). Le code pour l'afficher :
    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
    // affiche la boite de confirmation
    function showConfirmBox(title, str, funcYes){
     
    	$("#dgbox_confirm h3").text(title); // change le titre
    	$("#dgbox_confirm #cfm_msg").text(str); // change le texte 
     
    	// gestion du bouton Yes	
    	$("#dgbox_confirm #btnYes").click(funcYes);
     
    	// gestion du bouton No
    	$("#dgbox_confirm #btnNo").click(function(){
    		alert("fermeture");
    		$("#dgbox_confirm").hide();
    	});
     
     
    	$("#dgbox_confirm").show();
    }
    => je ne comprends pas pourquoi mais
    - lorsque j'ouvre pour la 1ere fois la dialogBox et que je clic sur No, alert("fermeture"); s'affiche 1 fois avant de cacher la div
    - lorsque j'ouvre pour la 2nd fois la dialogBox et que je clic sur No, alert("fermeture"); s'affiche 2 avant de cacher la div
    - lorsque j'ouvre pour la 3ieme fois la dialogBox et que je clic sur No, alert("fermeture"); s'affiche 3 avant de cacher la div
    ...

    D'où vient le problème et comment le résoudre ?
    => je pense que le problème doit venir de la déclaration de mes évènements


    merci d'avance,

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut
    A chaque ouverture de la dialog box, un évènement click est rajouté.
    Il faut placer le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // gestion du bouton Yes	
    	$("#dgbox_confirm #btnYes").click(funcYes);
     
    	// gestion du bouton No
    	$("#dgbox_confirm #btnNo").click(function(){
    		alert("fermeture");
    		$("#dgbox_confirm").hide();
    	});
    à l'extérieur de la fonction d'ouverture.
    Avec jQuery les évènements sont ajoutés et ne remplacent pas l'évènement click précédent.

    Dominique
    http://helpdesk.toitl.com/

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 860
    Par défaut
    ok merci pour l'info.

    Il n'y a vraiment aucun moyen pour écraser l'évènement ?

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 860
    Par défaut
    ok merci ça marche nickel

    Sans utiliser unbind, j'arrive à gérer correctement le bouton No mais pour le bouton yes (qui utilise funcYes), je ne vois pas comment faire (vu que funcYes peut changer de valeur après l'initialisation) ?
    => c'est possible ?

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour.

    Il m'est impossible de tester sans le reste du code. Essayer :
    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
    // affiche la boite de confirmation
    function showConfirmBox(title, str, funcYes){
     
    	$("#dgbox_confirm h3").text(title); // change le titre
    	$("#cfm_msg").text(str); // change le texte 
     
    	// gestion du bouton Yes	
    	$("#btnYes").click(function(){
    		funcYes();
    		return false;
    	});
     
    	// gestion du bouton No
    	$("#btnNo").click(function(){
    		alert("fermeture");
    		$("#dgbox_confirm").hide();
    		return false;
    	});
     
    	$("#dgbox_confirm").show();
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 860
    Par défaut
    merci mais ça ne fonctionne pas (le "return false" n'empêche pas l'empilage des évènements)
    => ça appelle plusieurs fois les fonctions si j'affiche plusieurs fois la dialogBox

    pour le code de la dialog box, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	<div id="dgbox_confirm" class="db_frame">
    		<div class="db_titlebar">
    			<h3></h3>
    			<a href="#"></a>
    		</div>
    		<div class="db_content">
    			<p id="cfm_msg"></p>
    			<p class="db_btn"><input type="button" id="btnYes"/><input type="button" id="btnNo"/></p>
    		</div>
    	</div>

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Exemple :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
    	<meta name="Author" content="Daniel Hagnoul">
    	<meta name="description" content="Page type">
    	<title>Page type</title>
    	<style>
    		/* BASE */
    		body {
    			background-color:#dcdcdc;
    			color:#000000;
    			font-family:sans-serif;
    			font-size:medium;
    			font-style:normal;
    			font-weight:normal;
    			line-height:normal;
    			letter-spacing:normal;
    		}
    		h1,h2,h3,h4,h5 {
    			font-family:serif;
    		}
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
    			margin:0px;
    			padding:0px;
    		}
    		p {
    			padding:6px;
    		}
    		ul,ol,dl {
    			list-style:none;
    			padding-left:6px;
    			padding-top:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    		div#conteneur {
    			width:95%;
    			margin:12px auto;
    			padding:6px;
    			background-color:#FFFFFF;
    			color:#000000;
    			border:1px solid #666666;
    			font-size:0.8em;
    		}		
    		div#affiche {
    			margin:12px;
    			padding:6px;
    			border:1px solid #999999;
    			background-color:#FFFFFF;
    			color:#000000;
    		}
     
    		/* TEST */
    		.db_frame {
    			display:none;
    		}
    	</style>
    	<script charset="utf-8" src="../lib/jqueryui-1.8/js/jquery-1.4.2.min.js"></script>
     	<script>
    		function showConfirmBox(title, str, funcYes){
     
    			$("#dgbox_confirm h3").text(title);
    			$("#cfm_msg").text(str);
     
    			// un événement click est construit à chaque appel de la fonction
    			// si n appels alors n événements sont construits
    			$("#btnYes").click(function(event){
    				$(this).unbind("click"); // supprime l'événement en cours
    				$("#dgbox_confirm").hide();
    				funcYes(event);
    				return false;
    			});
     
    			// un événement click est construit à chaque appel de la fonction
    			// si n appels alors n événements sont construits
    			$("#btnNo").click(function(){
    				$(this).unbind("click"); // supprime l'événement en cours
    				$("#dgbox_confirm").hide();
    				return false;
    			});
     
    			$("#dgbox_confirm").show();
    		}
     
    		$(function(){
    			$("#btn").click(function(){
    				showConfirmBox("Titre du dialogue", "Texte du dialogue", function(event){
    					// Firebug
    					console.log(new Date(event.timeStamp).toLocaleString());
     
    					// sans $(this).unbind("click") si n ouvertures alors n alertes !
    				});
    			});
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur">
    		<button id="btn">Show confirm</button>
     
    		<div id="dgbox_confirm" class="db_frame">
    			<div class="db_titlebar">
    				<h3></h3>
    				<a href="#"></a>
    			</div>
    			<div class="db_content">
    				<p id="cfm_msg"></p>
    				<p class="db_btn">
    					<input type="button" id="btnYes"/>
    					<input type="button" id="btnNo"/>
    				</p>
    			</div>
    		</div>
    	</div>
    </body>  
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 860
    Par défaut
    attention, ton exemple ne fonctionne pas (me semble t-il) : on est obligé de faire des unbind (donc le principe reste le même) :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
    	<meta name="Author" content="Daniel Hagnoul">
    	<meta name="description" content="Page type">
    	<title>Page type</title>
    	<style>
    		/* BASE */
    		body {
    			background-color:#dcdcdc;
    			color:#000000;
    			font-family:sans-serif;
    			font-size:medium;
    			font-style:normal;
    			font-weight:normal;
    			line-height:normal;
    			letter-spacing:normal;
    		}
    		h1,h2,h3,h4,h5 {
    			font-family:serif;
    		}
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
    			margin:0px;
    			padding:0px;
    		}
    		p {
    			padding:6px;
    		}
    		ul,ol,dl {
    			list-style:none;
    			padding-left:6px;
    			padding-top:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    		div#conteneur {
    			width:95%;
    			margin:12px auto;
    			padding:6px;
    			background-color:#FFFFFF;
    			color:#000000;
    			border:1px solid #666666;
    			font-size:0.8em;
    		}		
    		div#affiche {
    			margin:12px;
    			padding:6px;
    			border:1px solid #999999;
    			background-color:#FFFFFF;
    			color:#000000;
    		}
    		
    		/* TEST */
    		.db_frame {
    			display:none;
    		}
    	</style>
    	<script charset="utf-8" src="jquery-1.4.2.js"></script>
     	<script>
    		function showConfirmBox(title, str, funcYes){
    			
    			$("#dgbox_confirm h3").text(title);
    			$("#cfm_msg").text(str);
    
    			$("#btnYes").unbind("click");  // supprime l'événement			
    			$("#btnNo").unbind("click");  // supprime l'événement
    			
    			// un événement click est construit à chaque appel de la fonction
    			// si n appels alors n événements sont construits
    			$("#btnYes").click(function(event){
    				$("#dgbox_confirm").hide();
    				funcYes(event);
    				return false;
    			});
    			
    			// un événement click est construit à chaque appel de la fonction
    			// si n appels alors n événements sont construits
    			$("#btnNo").click(function(){
    				console.log("btnNo");
    				$("#dgbox_confirm").hide();
    				return false;
    			});
    			
    			$("#dgbox_confirm").show();
    		}
    		
    		$(function(){
    			$("#btn").click(function(){
    				showConfirmBox("Titre du dialogue", "Texte du dialogue", function(event){
    					// Firebug
    					console.log("btnYes");
    					// sans $(this).unbind("click") si n ouvertures alors n alertes !
    				});
    			});
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur">
    		<button id="btn">Show confirm</button>
    		
    		<div id="dgbox_confirm" class="db_frame">
    			<div class="db_titlebar">
    				<h3></h3>
    				<a href="#"></a>
    			</div>
    			<div class="db_content">
    				<p id="cfm_msg"></p>
    				<p class="db_btn">
    					<input type="button" id="btnYes"/>
    					<input type="button" id="btnNo"/>
    				</p>
    			</div>
    		</div>
    	</div>
    </body>  
    </html>

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 09/04/2004, 13h44
  2. [amc designer] création d'une base postgresql
    Par david42 dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 12/03/2004, 11h08
  3. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34
  4. création d'une batabse .gdb
    Par jejestyle dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 00h29
  5. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31

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