[JS]Nouvelle fenetre qui appelle une autre

Résolu/Fermé
mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013 - 9 juin 2009 à 17:00
 Utilisateur anonyme - 10 juin 2009 à 16:30
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 =)
A voir également:

1 réponse

Utilisateur anonyme
9 juin 2009 à 17:24
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.
0
mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013
9 juin 2009 à 17:50
Salut et merci pour ta réponse ahmet0851 =)

En effet, tu as bien compris de quoi je parle, l'idée est là! ^^

Seulement, je me demandais si c'était possible de résoudre le problème du passage de la 2nd à la 3ème fenêtre via Javascript, et non seulement avec du HTML...
(Eh oui, c'est ca, avoir un prof' exigeant!! xD)

Mais je te remercie tout de même pour ton intervention, ca pourrait me servir pour plus tard! ^.^
0
Utilisateur anonyme > mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013
9 juin 2009 à 18:21
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à.
0
mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013 > Utilisateur anonyme
9 juin 2009 à 20:53
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 ?
0
Utilisateur anonyme > mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013
10 juin 2009 à 11:18
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
0
mymemorial Messages postés 61 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 7 mars 2013 > Utilisateur anonyme
10 juin 2009 à 16:23
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
0