[JS]Nouvelle fenetre qui appelle une autre [Résolu/Fermé]

Signaler
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013
-
 Utilisateur anonyme -
Bonjour,
Je voudrais créer le code d'une fenetre principale -un formulaire- qui, en cliquant sur le bouton, appelle une nouvelle fenetre et utilise/affiche les informations de ce formulaire.
Puis, dans cette nouvelle fenetre (appelons la fenetre2), un nouveau champ commentaire (donc un textarea) qui, en cliquand sur un autre bouton, nous conduit vers une 3ème fenetre ou sera affiché les données du formulaire (première fenetre) et le commentaire (2ème fenetre).
Je suis parvenu a faire le passage de la 1ère à la seconde sans problème.

Mon problème se situe au niveau du passage de la 2nd à la 3ème fenetre.

A chaque fois que je clique sur le bouton de la 2nd fenetre, je reviens au formulaire de ma première fenetre sans passer a la troisieme fenetre.
Voici le script que j'ai créé :

<SCRIPT LANGUAGE="JavaScript">

	function ouvrir2(){           //3eme fenetre
	fenetre2=window.close
        fenetre3=window.open("","")
	fenetre3.document.write("La matricule saisie: " +document.form.ma.value)

	fenetre3.document.write("<br>Le loisir : ")
	if (document.form.TV.checked)
	{fenetre3.document.write(" " +document.form.TV.name)
	}
	if (document.form.Cinema.checked)
	{fenetre3.document.write(" " +document.form.Cinema.name)
	}
	if (document.form.Lecture.checked)
	{fenetre3.document.write(" " +document.form.Lecture.name)
	}
	
	fenetre3.document.write("Le commentaire : " +c)
	}
	
	function ouvrir(){     //2eme fenetre
	fenetre2=window.open("","")
	fenetre2.document.write("La matricule saisie: " +document.form.ma.value)
	var c;
	fenetre2.document.write("<br>Le loisir : ")
	if (document.form.TV.checked)
	{fenetre2.document.write(" " +document.form.TV.name)
	}
	if (document.form.Cinema.checked)
	{fenetre2.document.write(" " +document.form.Cinema.name)
	}
	if (document.form.Lecture.checked)
	{fenetre2.document.write(" " +document.form.Lecture.name)
	}	
	
	fenetre2.document.write("<form name=\"forms\"><br>Commentaire: <textarea name=\"text\"></textarea><br><br><input type=\"submit\" onclick=\"ouvrir2()\"></form>")
	c=fenetre2.document.forms.text.value;
        }
	
</SCRIPT>

<BODY>
<Form name="form">
  Matricule : <input type="text" name="ma">
<br>
  Loisirs :<br>
<input type="checkbox" value="tv" name="TV">TV
<input type="checkbox" value="ci" name="Cinema">Cinema
<input type="checkbox" value="le" name="Lecture">Lecture
 <br>
<input type="submit" onclick="ouvrir()">
</Form>
</BODY>
</HTML>


Merci d'avance pour toute aide =)

1 réponse


Bonjour,

Si j'ai compris tu veux depuis une page aller vers une deuxième, de celle-ci vers une troisième, sans les fermer ?

Pourquoi tu ne joues pas avec les attributs de form ?? tu as action pour envoyer les données vers une page et tu as target comme les liens pour ouvrir dans une nouvelle.

Exemple avec ces 3 pages :


/**** page1.html ****/
Page 1
<form method='post' action='page2.html' target="_blank">
  <input type="submit" name="envoyer" value="Vers page 2">
</form>

/**** page2.html ****/
Page 2
<form method='post' action='page3.html' target="_blank">
  <input type="submit" name="envoyer" value="Vers page 3">
</form>

/**** page3.html ****/
Page 3 - Terminus


page1 envoie des données à page 2
page2 récupère et envoie à page3
page3 récupère

Enfin si j'ai bien compris ^^

Sous Firefox ça ouvre dans un nouvel onglet. Sous IE une nouvelle fenêtre.
Utilisateur anonyme >
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013

En fait en regardant de plus près, dans ton ouvrir() tu crées un formulaire nommé forms alors que dans ouvrir2() tu essaies de récupérer depuis form. Déjà à renommer.

Ensuite dans ouvri2 tu fais un windows.close pourquoi ?

Puis tu essaies de récupérer des champs inexistant donc normal que ça ne fait rien.

Essaie de mettre ces valeurs dans des input type='hidden'

En plus tu essaies de lancer la fonction ouvrir2 alors que si tu regardes le code source lors de l'ouverture de la deuxième page, tu n'as aucune fonction nommée ouvrir2 !! Donc il faut faire un document.write avec le code d'ouvrir2

Je vois pas mal d'erreur !!!

essaie de corriger ça déjà.
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013
> Utilisateur anonyme
Merci à nouveau pour ton intervention!! =D
Alors :

1. Par rapport à 'form' et 'forms', il y'a deux formulaires : Le premier (matricule, loisirs) qui est 'form' sur la 1ère page, le second (commentaire) qui est 'forms' sur la 2nd page.
Dans ouvrir() je n'ai fait appel qu'au premier formulaire (form) tout en incluant le commentaire dans un nouveau (forms). Dans ouvrir2() par contre, je dois afficher les données de 'form' et 'forms' (le commentaire, que je dois saisir dans la 2nd page)

2. En ce qui concerne le window.close, bon, c'est juste facultatif j'avoue xD
J'avais pensé au fait que, quand on va ouvrir la 3ème page, il serait inutile de conserver la 2nd ouverte ? Vu que la 3eme contiendra les données déjà affichées dans la 2nd + le commentaire saisi dans la 2nd.
Enfin je ne sais pas, je crois que je vais l'enlever tout de même ^^

Euh par contre, déclarer la fonction ouvrir2() avant ouvrir(), je crois que le problème viendrait de là en effet! =)
Tu as parlé de document.write avec le code d'ouvrir2, pourrais-tu m'en parler un peu plus ? =)

En fait, est-ce possible d'ouvrir une nouvelle fenetre à partir d'une autre nouvelle fenetre a la base ?
J'ai testé un code basique, dans le genre :

function ouvrir2(){
fenetre3=window.open("","")
fenetre3.document.write("Test")
}

function ouvrir1(){
fenetre2=window.open("","")
fenetre2.document.write("<input type=\"submit\" onclick=\"ouvrir2()\">")
}


avec dans le body un bouton qui appelle la fonction ouvrir1(), et la encore : Rien.
Donc ca ne vient définitivement pas des erreurs, je me trompe ? =)
La fonction ouvrir2() ne charge meme pas, est-ce une erreur de syntaxe par hasard ?
Utilisateur anonyme >
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013

En fait, après avoir fait un windows.open() tu crées une page vierge, sans code.

A l'intérieur toi, tu mets ton formulaire, mais tu ne mets pas de fonction javascript, ni les balises <html><body>...

Donc ce que tu peux faire dans un premier temps, à chaque page ouverte, regarde le code source de la page, et tu verras ce qu'il se passe.

ce que tu peux faire, c'est mettre chaque fonction Javascript dans des fichiers distinct tel que ouvrir() se trouve dans ouvrir.js, ouvrir2() dans ouvrir2.js

Ensuite dans la page principale au lieu de mettre tes deux fonctions, tu mets entre les balises<head>, <script src="ouvrir.js" type="text/javascript"></script>

jusque là, rien de compliqué.

Tu mets des champs cachés pour envoyer les anciennes valeurs, car quand tu ouvres une nouvelle fenêtres, ces données sont perdues (regarder le code source, TOUJOURS !!)

Bon c'est trop long à expliquer voilà un exemple dans ce Zip ^^ => http://dl.free.fr/getfile.pl?file=/TWWdfgHS
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013
> Utilisateur anonyme
OOps, j'ai complètement zappé les balises HTML xDDD

Merci beaucoup, ton exemple a été très clair et marche à perfection comme je veux =)
(J'aurais au moins appris a utilisé les input hidden aujourd'hui lol)
Je crois que c'est bon là ! ^^

Vraiment un grand merci l'ami, tes interventions ont été très utiles !! =D
Utilisateur anonyme >
Messages postés
61
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
7 mars 2013

De rien l'ami ^^

Bon courage =)