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

JavaScript Discussion :

Open et opener => Ma fonction ne... fonctionne pas...


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de romulus
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 51
    Points
    51
    Par défaut Open et opener => Ma fonction ne... fonctionne pas...
    Bonjour,

    En quelques mots:

    -fenêtre appelante (title="mdiin")
    dans cette fenêtre, un formulaire (name="mdiin") comprenant, entre autres, 2 champs : 1 champs hidden (name et id="mdiin_ch") et 1 champs text (name et id="mdiin_ch_pers").
    1 hyperlien me permet d'appeler une fonction javascript qui m'ouvre un pop-up.

    -fenêtre appelée
    dans cette fenêtre, un formulaire me permet de créer une personne (via php) puis sur la 2ème page d'afficher la personne créée et affiche un lien appelant cette fonction :

    function SetPers(formu,champs,cptrpersonne,civpersonne,nompersonne,prenpersonne,adrpersonne) {
    window.opener.document.forms.formu.champs.value = cptrpersonne;
    champs=champs + "_pers";
    window.opener.document.forms.formu.champs.value = civpersonne + " " + nompersonne + " " + prenpersonne;
    window.opener.document.forms.formu.champs.title = adrpersonne;
    self.close();
    }

    Dans formu, je passe le nom du formulaire de la page appelante.
    Dans champs, je passe le nom du champs que je souhaite renseigner.
    Dans cptrpersonne, la clé de la personne créée.
    Puis dans les variables suivantes, les éléments correspondants à la personne(civilité,nom, prenom et adresse).

    Je souhaite avec ma fonction renseigner les champs de la fenêtre appelante et fermer la fenêtre appelée...

    J'ai testé mes valeurs, vérifié que sur ma 2ème page de la fenêtre appelée je conserve bien le nom de la fenêtre appelante (window.opener.document.title => mdiin), tout est ok !

    Mon problème est que j'ai l'erreur suivante et n'arrive pas à trouver la solution : 'window.opener.document.forms.formu.champs' a la valeur null ou n'est pas un objet.

    Dans ma fonction, j'ai essayé de remplacer forms.formu par forms[0] mais rien n'y fait...

    Please help !

    Romulus

  2. #2
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Tu passe quoi en parametre de ta fonction SetPers ?

  3. #3
    Membre du Club Avatar de romulus
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    Je viens de trouver la cause... enfin !! J'y suis depuis hier !!

    Si je remplace les variables par mes noms de formulaires et champs en direct, ça fonctionne :

    function SetPers(formu,champs,cptrpersonne,civpersonne,nompersonne,prenpersonne,adrpersonne) {
    window.opener.document.forms['mdiin'].mdiin_ch.value = cptrpersonne;
    champs=champs + "_pers";
    window.opener.document.forms['mdiin'].mdiin_ch_pers.value = civpersonne + " " + nompersonne + " " + prenpersonne;
    window.opener.document.forms['mdiin'].mdiin_ch_pers.title = adrpersonne;
    self.close();
    }

    Alors, mon new problème est d'utiliser le contenu de formu et champs dans ma fonction !! Sachant que, je le répète, j'ai bien du contenu dans mes variables.... Je ne suis pas un expert en Javascript et vous remercie d'avance pour votre aide


    Romulus

  4. #4
    Membre du Club Avatar de romulus
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    Dans SetPers(), je passe ceci :

    <A href="#" onClick="SetPers('<?php echo($_SESSION["creatpersonne"]["form"]); ?>','<?php echo($_SESSION["creatpersonne"]["champs"]); ?>',<?php echo($affichepersonne["PER_CPTR"]); ?>,'<?php echo($affichepersonne["PER_TITR"]); ?>','<?php echo($affichepersonne["PER_NOM"]); ?>','<?php echo($affichepersonne["PER_PREN"]); ?>','<?php echo(adresse($affichepersonne["PER_ADRE"], 0)); ?>')" title="Cliquez ici pour assigner la personne et fermer cette fenêtre">Assigner et fermer</A>

    Ce qui revient à :

    <A href="#" onClick="SetPers('mdiin','mdiin_ch',123,'Monsieur','DE VILLEPIN','Dominique','Palais de l'Elysée - 75000 PARIS')" title="Cliquez ici pour assigner la personne et fermer cette fenêtre">Assigner et fermer</A>


    Romulus

  5. #5
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Pourquoi n'utilises tu pas la fonction getElementById(champs) ?
    Qui une est plus simple d'utilisation et de 2 est conforme à la norme du W3C.

    Donc à la place de faire :
    window.opener.document.forms['mdiin'].mdiin_ch.value
    Tu fais :
    window.opener.document.getElementById("mdiin_ch").value

    Ce qui donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function SetPers(id_champ1, id_champ2,cptrpersonne,civpersonne,nompersonne,prenpersonne,adrpersonne) {
    window.opener.document.getElementById(id_champ1).value = cptrpersonne;
    window.opener.document.getElementById(id_champ2).value = civpersonne + " " + nompersonne + " " + prenpersonne;
    self.close();
    }
    ou id_champ1 est l id d ton champ caché
    et id_champ2 l 'id de ton champ visible.

  6. #6
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Dans ta fonction tu ne modifie que le champ caché.

  7. #7
    Membre du Club Avatar de romulus
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    Merci pour ces premiers précieux renseignements

    Je vais suivre ton conseil pour être conforme à la norme, cependant, est-ce que cela me permet d'utiliser mes variables formu et champs au lieu d'avoir des valeurs en dur ?

    Pour ce qui est des champs renseignés, regardes bien, je remplis aussi mon champs texte via ma petite astuce 'champs = champs + "_pers";'


    Romulus

  8. #8
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    A ce moment là avec ton astuce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function SetPers(id_champ, ,cptrpersonne,civpersonne,nompersonne,prenpersonne,adrpersonne) {
    window.opener.document.getElementById(id_champ).value = cptrpersonne;
    id_champ = id_champ + '_pers';
    window.opener.document.getElementById(id_champ).value = civpersonne + " " + nompersonne + " " + prenpersonne;
    self.close();
    }

  9. #9
    Membre du Club Avatar de romulus
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    Purée, je viens de faire ça justement et ça MARCHE, ça FONCTIONNE !!!!

    Youhou !!!!! Je meprends la tête depuis hier pour cette co.......rie !!!!

    MERCI MERCI MERCI MERCI MERCI !!!

    C'est Vendredi !!!!!


    Romulus

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

Discussions similaires

  1. Pourquoi cette fonction ne fonctionne pas correctement
    Par cabiste007 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 09/04/2015, 21h08
  2. [AC-2010] fonction Debogagene fonctionne pas
    Par sabrine1311 dans le forum Access
    Réponses: 4
    Dernier message: 25/02/2015, 16h44
  3. Les appels aux fonctions ne fonctionnent pas
    Par MaPommeTao dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/08/2011, 22h33
  4. [Configuration] Fonction mail fonctionne pas depuis ma machine !
    Par tomix81 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/10/2007, 01h33
  5. Réponses: 2
    Dernier message: 19/10/2007, 17h31

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