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 :

Remplir un formulaire dans une Pop-Up à partir de la fenêtre appelante


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 19
    Points
    19
    Par défaut Remplir un formulaire dans une Pop-Up à partir de la fenêtre appelante
    Bonjour,

    Imaginez un formulaire qui dispose d'un bouton Prévisualiser et d'un bouton Soumettre. Le bouton Soumettre fonctionne à merveille, il fait ce qu'il a à faire. C'est pour le bouton Prévisualiser que je me pose cette question :

    Comment faire pour appeler un petit fichier HTML qui contient un formulaire (identique au formulaire où se trouve le fichier Prévisualiser) avec tous ses champs cachés, remplir automatiquement tous ces champs à partir champs du formulaire de la page appelante et faire une action submit, qui appellera le fichier preview.php (toujours dans la pop-up) ?

    1) Ouvrir le fichier HTML dans la fenêtre pop-up. Ça je sais faire.

    2) Remplir tous les champs du formulaire à partir des données tapées dans le formulaire de la fenêtre appelante. Là je bloque.

    3) Faire un submit par programmation (alors qu'il n'y a pas de bouton Submit sur ce formulaire). Pour ça j'ai cru voir que c'est quelque chose comme document.nomFormulaire.submit(); C'est bien ça ?

    Donc voilà, je recherche simplement de l'aide pour les étapes 2 et 3.

    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    si tu ouvres ta popup correctement il n'y a pas de souci ...


    var popup=window.open('machin/htm');

    ensuite depuis la mère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    popup.document.forms['0'].elements['truc'].value = 'cocuou'
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    OK, j'ai essayé mais ça ne marche qu'une fois sur deux (sous IE7). Très très étrange. Et sous Firefox c'est pire, ça ne marche pas du tout.

    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
     
        function openWinPreview()
        {
          var winObj;
          var winName;
          var params;
     
          winName = "preview";
     
          params  = "toolbar=0,";
          params += "location=0,";
          params += "directories=0,";
          params += "status=0,";
          params += "menubar=0,";
          params += "scrollbars=1,";
          params += "resizable=1,";
          params += "width=545,";
          params += "height=450,";
          params += "left=25,";
          params += "top=25";
     
          winObj = window.open("preview.html", winName, params);
          winObj.document.forms[0].elements[0].value = "Hello world!";
        }
    J'ai aussi essayé en remplaçant par une ligne de code un peu plus significative :
    winObj.document.nomFormulaire.nomItem.value = "Hello world!";

    Le résultat est le même : ça marche de manière aléatoire sous IE7 et ça ne marche pas du tout sous Firefox. J'imagine que c'est une histoire de sécurité.

    Si ça ne marche pas avec une chaîne en dur, imaginez ce que ça va être quand je vais tenter de récupérer la valeur d'un champ du formulaire de la page appelante !


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Finalement j'ai changé de logique. Au lieu de contrôler les données depuis la page appelante, je les contrôle depuis la page appelée. Donc je fais un onload="initvalues()"; La fonction initValues() ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        function initValues()
        {
          document.forms["nomForm"].elements["champ1"].value = opener.document.forms["nomForm"].elements["champ1"].value;
          document.forms["nomForm"].elements["champ2"].value = opener.document.forms["nomForm"].elements["champ1"].value;
          document.forms["nomForm"].elements["champ3"].value = opener.document.forms["nomForm"].elements["champ1"].value;
        }
    Et là, ça fonctionne ! Bref, le contrôle des données depuis la page appelante, c'est à oublier, les browsers semblent avoir bloqué cette possibilité par mesure de sécurité.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    il s'agit juste d'un problème de timing ...
    Lorsque tu essayes de modifier les valeurs des champs, ils ne sont pas encore instanciés ...

    il suffirait soit de mettre un setTimeout pour retarder la modification des champs ou plus sur, tester dans un setInterval l'existance des champs avant de tenter de les modifier.

    Mais ta solution inverse est plus que logique puisque c'est la fenetre appelée qui une fois instanciée procédera aux modifications ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Grizzzly Voir le message
    le contrôle des données depuis la page appelante, c'est à oublier, les browsers semblent avoir bloqué cette possibilité par mesure de sécurité.
    Pas du tout !
    Tu as juste dû mal t'y prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    winObj.document.forms['nomFormulaire'].elements['nomItem'].value = "Hello world!";
    fonctionnera sans problème sur tous les nav, pour peu que les identifiants soient corrects ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Rien à voir avec la sécurité, il faut juste laisser le temps au browser d'instancier le popup...
    essayer de modifier un champs qui n'existe pas ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    SpaceFrog a sûrement raison, c'est une question de temps. Comme il dit, les objets du formulaire ne sont pas encore instanciés au moment où la page appelante exécute les instructions de "remplissage" des champs du formulaire. Ça explique le comportement bizarre que j'avais avec IE (où ça marchait une fois sur deux).

    En tout cas maintenant tout marche au poil. Mais qu'est-ce que j'en aurai passé du temps à faire des tests avant de décider de changer de logique ! Des heures perdues à chercher à comprendre, à faire des tests dans tous les sens, à faire des recherches sur Google, etc.

    En tout cas merci pour votre aide !

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    merci pour le "sûrement "
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Creer un formulaire dans une pop-up
    Par kylarstern dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2015, 13h25
  2. Formulaire dans une pop-up
    Par yuijfnjwxi dans le forum jQuery
    Réponses: 0
    Dernier message: 18/01/2015, 15h17
  3. Remplir un formulaire dans une page distante
    Par Lebas dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/10/2013, 04h10
  4. Remplir un formulaire dans une application via un programme JAVA
    Par konkzor dans le forum Général Java
    Réponses: 7
    Dernier message: 11/07/2012, 15h14
  5. remplir un formulaire dans une iframe
    Par pimpmyride dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2010, 12h50

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