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 :

Fonction JavaScript dans un dialog


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut Fonction JavaScript dans un dialog
    Bonjour,

    J'ai un petit problème ne sais pas comment faire (à moins que ce ne soit impossible).

    A partir d'une page HTML, je crée un dialog comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    wk= executeAjax("#hello","personne.php",id); 
    $( "#hello"  ).dialog( "option", "height", 760  );
    $( "#hello"  ).dialog( "option", "width", 1200 ); 
    $( "#hello"  ).dialog( "option", "Fiche individuelle", id);
    $( "#hello" ).dialog( "open" );
    $("#hello").css('background', 'black');
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="hello" ><p> 
    </p></div>


    Même si je pourrais simplifier tout cela (mais je suis en test) cela fonctionne très bien, j'exécute correctement la procédure php.

    Dans cette procédure je crée plusieurs objets (image, select, tables, boutons, etc) qui s'affichent parfaitement bien. Mais maintenant je souhaiterais lorsque je clique sur soit sur un bouton, soit sur une entrée d'une table de cette fenêtre, invoquer une fonction JavaScript ( native ou JQuery). Par exemple en test lancer alert(...);


    J'ai essayé plusieurs choses mais sans succès. Y-a-t-il une technique pour réaliser ceci ?

    Merci d'avance. Gérard

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    1) pour jquery il y a un forum jquery

    2) pourquoi faire une procédure javascript qui demande à php de généré un code source html qui récupéré par javascript puis interprété par le moteur de rendu pour enfin produire des éléments du DOM.
    javascript sais très bien tout seul généré les élément du DOM

    3) pour que ton formulaire appelle une fonction js il faut que dans le code de ton formulaire il y ait un gestionnaire d'événement

    avec ta façon de faire
    javascript va envoyer une demande à php
    php va produire une string contenant du code html et du javascript
    javascript va recevoir cette chaine
    il va invoquer le moteur de rendu HTML pour créer les éléments du DOM
    parmi ces élément il y en a un sui contient le texte du source javascript crée par php
    Le moteur de rendu va donc invoquer l'interprète javascript pour créer la ou les fonctions et objets décrit dans ce code
    l'interprète javascript rend la main au moteur html
    lui-même rend la main à la procédure javascript qui se termine.

    je pense qui serait beaucoup plus simple soit de créer le formulaire en HTML dans un div caché dès le départ et le montrer quand tu en a besoin.

    ou que ce soit javascript qui construise le DOM.
    s'il y a des donnée à placer dans le DOM alors ajax n'a qu'a demander ces données.

    de toute façon quelle que soit la façon dont tu t'y prends

    fais une page qui contient le formulaire avec l'appel javascript qui va bien (onsubmit) lors cela fonction.
    tu enlève la partie formulaire et tu mets en place ta fonction javascript qui est censé le créer

    Dans celle-ci soit tu colle directement ton formulaire tel que tu l'avais fait à la première étape.
    Soit tu le fais directement en javascript soit tu le fais via php

    mais le code html que de devras produire en javascript ou en html devra être exactement le même que celui que tu aura crée dans ta première page.

    Je pense que ta façon de faire est extrêmement compliqué et peu efficace.

    personnellement je garderais le formulaire dans la page HTML
    je ferais une requête pour obtenir les donner à y placer
    et je montrerais le formulaire.

    ainsi tout est fait dans un seul endroit.
    et les échanges entre le serveur et le client sont réduit au minimum. seule les données transitent.


    pour garder ta méthode de travail et ajouter un appel javascript il faut soit que le serveur mette dans le code html du form
    un attribut [CODEonline]onsubmit="return mafunc();"[/CODEonline].
    soit que le javascript récupère à la volé une référence à cet élément.
    Mais pour ça il faut qu'il soit crée. Or ce que tu reçois du serveur c'est une String contenant du code HTML. les élément ne sont pas encore créés.


    A+JYT

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Merci beaucoup pour cette réponse si rapide et complète.

    En fait j'avais deux options soit créer un nouvelle page HTML. C'est ce que j'avais fait au début en utilisant window.open('personne.php?ref='+id); Cette nouvelle page s'affichait dans un nouvel onglet (je teste sous FireFox), soit utiliser "Dialog".

    Mon application est construite de la façon suivante :

    - Une page principale HTML affichant dans une table une liste de noms de personnes.

    - si l'on clique sur un nom, une boite de type dialogue s'affiche avec un certain nombre de caractéristiques relatives à cette personne (photo, état civil, etc...) dont une table (construite dynamiquement à partir de données récupérées d'une base MYSQL). Imaginons que ce soit une liste de produits. Cela fonctionne parfaitement bien.

    - Je voudrais qu'en cliquant sur un produit on puisse afficher une nouvelle boite avec les caractéristiques de ce produit. En fait il s'agirait de plusieurs boites en cascade. Le problème que j'ai c'est que si je clique sur une entrée de la table"produits' rien ne se passe ce qui est sans doute normal de la façon dont je m'y prends. J'ai essayé d'ajouter dynamiquement une procédure Javascript avec le code de la boite dialog , mais sans aucun effet. Chaque entrée de la table est générée de la façon suivante :
    <td onclick="maFonction('.$NO_Produit.')">'.$titre.'</td>


    Pour des raisons d'ergonomie, je souhaitais juste une petite boite qui s'afficherait par dessus la page principale, d'où cette décision d’utiliser un dialog dont je peux définir la taille.
    L'idée de cacher le objets m'avait déjà traversé l'esprit, mais peut-on cacher qqchose qui est créée dynamiquement ?

    Pour terminer je voudrais ajouter que je suis assez novice pour ce qui concerne JavaScript et JQuery (je codais avant en Java) ce qui explique que je m'y prends certainement pas de la bonne façon. D'où cet appel au forum pour obtenir des conseils.

    Merci encore pour ton aide. Gérard

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Je viens juste de m'apercevoir qu'il y avait une erreur dans '<td onclick="maFonction('.$NO_Produit.')">'.$titre.'</td>',, j'avais oublié le point-virgule.
    J'ai corrigé et ça marche impec maintenant.

    Merci encore pour tout

    Gérard

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

Discussions similaires

  1. [PHP-JS] fonction javascript dans un script PHP
    Par guy2004 dans le forum Langage
    Réponses: 7
    Dernier message: 19/11/2006, 17h50
  2. passer une fonction javascript dans un bouton
    Par zthibaut dans le forum Flash
    Réponses: 3
    Dernier message: 06/11/2006, 12h37
  3. Réponses: 2
    Dernier message: 03/04/2006, 18h38
  4. Appel de fonction javascript dans innerHtml
    Par Empty_body dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 14/03/2006, 12h41
  5. Réponses: 3
    Dernier message: 21/02/2006, 18h05

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