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 :

UI Dialog is not a function


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Par défaut UI Dialog is not a function
    Bonjour,

    je n'arrive pas à faire fonctionner simplement le composant Dialog de JQuery UI.
    Je cherche juste à faire apparaitre une boite de dialogue "confirmer-annuler" sur le click d'un bouton.

    Je développe sous ZF, dans mon template j'inclus les différents fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // inclusion de jquery
    $this->headScript()->prependFile('/js/jquery-1.3.2.js');
    // j'inclus les dépendances
    $this->headScript()->appendFile('/js/jquery-ui/ui.core.js');
    $this->headScript()->appendFile('/js/jquery-ui/ui.resizable.js');
    $this->headScript()->appendFile('/js/jquery-ui/ui.draggable.js');
    // inclusion de dialog
    $this->headScript()->appendFile('/js/jquery-ui/ui.dialog.js');
    // inclusion du CSS produit par ThemeRoller
    $this->headLink()->appendStylesheet('/css/jquery/jquery-ui-1.7.2.custom.css'); 
    // Mon fichier js perso
    $this->headScript()->appendFile('/js/actualites/buyarticle.js');
    ce qui me donne en <head>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script src="/js/jquery-1.3.2.js" type="text/javascript">
    </script>
    <script src="/js/jquery-ui/ui.core.js" type="text/javascript">
    </script>
    <script src="/js/jquery-ui/ui.resizable.js" type="text/javascript">
    </script>
    <script src="/js/jquery-ui/ui.draggable.js" type="text/javascript">
    </script>
    <script src="/js/jquery-ui/ui.dialog.js" type="text/javascript">
    </script>
    <script src="/js/actualites/buyarticle.js" type="text/javascript">
    Jusque la, tout m'a l'air correct, les appels sont dans le bon ordre.
    Dans le template, j'ai préparé la div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="dialog" title="Acheter un article">
    	<p>Cet article vous coûtera 1 crédit</p>
    </div>
    Et enfin mon fichier buyarticle.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $(document).ready( function() {
     
    	$("input#buyarticle").click( function(e) {
    		e.preventDefault();
                    $("div#dialog").dialog('open');
            }
    J'occulte les options modal:true etc... juste pour tester.
    Et dans ma console Firebug, je me retrouve tout le temps avec la même erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $("div#dialog").dialog is not a function
    --- $("div#dialog").dialog('open');
    Par contre, si je mets dialog() hors du .click(), la boite apparait bien.

    Je ne comprends pas

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Par défaut
    J'ai pas encore bien regardé la fonction dialog dans l'UI, mais y'a qqchose qui me gene dans ton code: essaie $("#dialog").dialog au lieu de $("div#dialog").dialog

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Par défaut
    Bon, en fait c'est dialog() qui ne fonctionne pas lorsque je le place dans un évènement click() , ou over().

    Si je le mets juste après $(document).ready() , la boite apparait très très bien.

    Je ne comprends vraiment pas pourquoi, c'est pas logique...

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Par défaut
    Et si tu executes directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("div#dialog").dialog('open');
    dans ta console javaScript ou Firebug?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Par défaut
    Citation Envoyé par nabab Voir le message
    J'ai pas encore bien regardé la fonction dialog dans l'UI, mais y'a qqchose qui me gene dans ton code: essaie $("#dialog").dialog au lieu de $("div#dialog").dialog
    Merci pour ton aide.

    J'avais déjà essayé, au cas où c'était le sélecteur CSS qui ne convenait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $(document).ready( function() {
    	$("#dialog").dialog();
    }
    => ça marche très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(document).ready( function() {
     
    	$("input#buyarticle").click( function(e) {
    		e.preventDefault();	
    		$("#dialog").dialog();
              }  
    }
    => ça ne marche pas.


    Je comprends rien du tout

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(document).ready( function() {
     
    	$("#buyarticle").click( function(e) {
    		$("#dialog").dialog();
    		e.preventDefault();	
             }  
    }
    ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Par défaut
    Citation Envoyé par nabab Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $(document).ready( function() {
     
    	$("#buyarticle").click( function(e) {
    		$("#dialog").dialog();
    		e.preventDefault();	
             }  
    }
    ?
    Non plus.

    .dialog() is not a function :/
    Et la, le preventDefault ne fonctionne même pas.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Par défaut
    J'ai enfin trouvé !

    Il fallait d'abord initialiser la boite de dialogue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $(document).ready( function() {
     
    	var popo = $("#dialog").dialog({ autoOpen: false });
    Puis dans le click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $("#buyarticle").click( function() {
       e.preventDefault();
       popo.dialog("open");
    }
    Et voila !

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Par défaut
    Je vois pas. Tu es sur que ton #buyarticle est bien dans le DOM ondocument.ready?

    Avais pas vu...

  10. #10
    Membre éclairé
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Par défaut
    hello,

    j'avais ce même probleme, merci pour l'info. Mais par contre, dans l'action des boutons, j'ai un autre soucis pour fermer la fenêtre.
    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
    var dialogDeleteImage = $("#dialog-delete-image").dialog({
    		autoOpen: false,
    		resizable: false,
    		show: 'slide',
    		hide: 'drop',
    		height:180,
    		width:350,
    		modal: true,
    		buttons: {
    			'Oui': function() {
    				$(this).dialog("close");
    			},
    		}
    	});
     
    	$('a.gallery_delete_img').live('click',function() {
    		dialogDeleteImage.dialog('open');
    		return false;
    	});
    Sur le bouton "Oui", lors du click, j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).dialog is not a function
    Du coup, logiquement, il faut plutot utiliser en javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    buttons: {
    			'Oui': function() {
    				this.dialog("close");
    			},
    Mais rien ne change, j'ai essayé plusieurs choses sans succes. Bien que ce soit du JS pur, cela reste un soucis avec ZF car en testant comme ceci sans ZF , çà marche :
    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
    // Dialog
    var myDialog = $('#dialog').dialog({
    	autoOpen: false,
    	width: 600,
    	buttons: {
    		"Ok": function() {
    			$(this).dialog("close");
    		},
    		"Cancel": function() {
    			$(this).dialog("close");
    		}
    	}
    });
     
    // Dialog Link
    $('#dialog_link').click(function(){
    	myDialog.dialog('open');
    	return false;
    });
    Merci de votre aide.

    F.

  11. #11
    Invité de passage
    Inscrit en
    Novembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 1
    Par défaut Probleme semblable
    j'ai Jquery ui dialog qui ne fonctionne pas avec internet explorer 8

    lorqu'il s'agit de le faire apparaitre par un click!

    Or pourtant cela fonctionne avec Firefox.

    Que Faire SVP!

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

Discussions similaires

  1. TypeError: $(..).dialog is not a function
    Par flamant dans le forum jQuery
    Réponses: 4
    Dernier message: 04/07/2015, 18h50
  2. is not a function
    Par Methode dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/01/2007, 22h25
  3. indexOf is not a function : pourquoi
    Par avogadro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/08/2006, 17h50
  4. document.getElementByTagName is not a function ?
    Par krolineeee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/05/2006, 10h41
  5. window.document.forms[0].submit is not a function ?????
    Par michaelbob dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 04/01/2006, 16h08

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