Formulardaten von PopUp-Fenster übergeben
Andreas Breitschopp
- javascript
Hallo zusammen!
Habe folgendes Problem:
Über einen Link wird eine PopUp-Fenster geöffnet, welches ein Formular beinhaltet. Soweit kein Problem.
Aber wie kann ich nun die Formulardaten im PopUp-Fenster nach Klicken eines Buttons an das Hauptfenster übergeben (also Target das Hauptfenster, damit dort die neue Seite geladen wird) und anschießend das PopUp-Fenster schießen?
Die Lösung ist bestimmt ganz einfach, aber ich find' sie einfach nicht...
Vielen Dank im Voraus für euere Hilfe
Andreas
Hallo
mit 'opener' kannst Du auf dasjenige Fenster zugreifen, aus welchem du das popup geöffnet hast.
gruss
Hallo!
Hallo
mit 'opener' kannst Du auf dasjenige Fenster zugreifen, aus welchem du das popup geöffnet hast.
gruss
Ja, das habe ich auch schon bei meiner Internetsuche gelesen, aber mir ist nicht klar, wo ich das Objekt "opener" im Formular verwenden muss? Ist es erforderlich dazu eine eigene Javascript-Funktion zu definieren und wenn ja wo wird die aufgerufen?
Ich muss dazu sagen, dass ich das erste Mal Javascript verwende und mich daher damit nur sehr wenig auskenne, bin also für jede Hilfe dankbar...
Viele Grüße
Andreas
Hallo Andreas.
Aber wie kann ich nun die Formulardaten im PopUp-Fenster nach Klicken eines Buttons an das Hauptfenster übergeben (also Target das Hauptfenster, damit dort die neue Seite geladen wird) und anschießend das PopUp-Fenster schießen?
Folgenden Ansatz würde ich verfolgen. Du prüfst im Hauptfenster, ob eventuell Parameter übergeben wurden, falls ja, lasse sie weiterverarbeiten, falls nein, dann öffne ein Popup. In diesem Popup platzierst du dein Formular, das du manuell absendest, indem du die Formulareingaben an die HTML-Datei anhängst und mit diesem String einen Reload des openers vornimmst.
Vereinfacht etwa so:
--- Hauptfenster haupt.html ---
<script type="text/javascript">
<!--
function init() {
if(window.location.search != "") {
// tu was mit den Daten
}
else {
p = window.open('pop.html','Testfenster');
}
}
//-->
</script>
<body onload="init();">
--- Popup pop.html ---
<script type="text/javascript">
<!--
function senden() {
var ziel = "haupt.html?";
ziel += "name1=wert1";
opener.location.href = ziel;
}
//-->
</script>
<form action="" onsubmit="senden();self.close();return false;">
<!-- Eingabefelder -->
<input type="submit" value="Submit">
</form>
Das Javascript gehört in den Kopfbereich der jeweiligen HTML-Seite. Funktioniert zumindest hier im IE. Was hier nicht geht, ist als Formularziel "opener" anzugeben. Aber sicher fällt jemandem noch was besseres ein.
Freundschaft!
Siechfred
hi,
Was hier nicht geht, ist als Formularziel "opener" anzugeben.
nein, natürlich nicht, target erwartet ja einen fensternamen.
Aber sicher fällt jemandem noch was besseres ein.
man könnte zuvor aus dem popup heraus opener.name einen wert zuweisen (oder schon im hauptfenster self.name), und dann mit target auf diesen namen zielen.
könnte allerdings probleme geben in browsern, die window.name nur lesen, aber nicht beschreiben lassen wollen.
gruß,
wahsaga
Hallo wahsaga.
man könnte zuvor aus dem popup heraus opener.name einen wert zuweisen (oder schon im hauptfenster self.name), und dann mit target auf diesen namen zielen.
Ja, auf die Idee bin ich noch gar nicht gekommen, dann entfiele das manuelle Zusammenbauen der Zieldatei. So sieht es jetzt aus:
--- start.html ---
<script type="text/javascript">
<!--
window.name = "haupt";
if(window.location.search != "") {
document.write("<p>"+window.location.search+"</p>");
}
else {
p = window.open("pop.html","Testfenster");
}
}
//-->
</script>
--- pop.html ---
<form action="start.html" target="haupt" method="GET" onsubmit="self.close();return true;">
<input type="hidden" name="dummy" value="sent">
<input type="submit" value="Submit">
</form>
Die JS-Funktion senden() im Kopfbereich von pop.html entfällt dann.
Freundschaft!
Siechfred
Hallo!
Vielen Dank euch für die schnell Hilfe: War genau das was ich gesucht habe (wusste doch, es gibt eine einfach Lösung ;-) ), funktioniert prima.
Danke nochmals
Andreas