window.close bissl komplizierter

Avariel

Erfahrenes Mitglied
Hallo zusammen..
ich hab hier ne Anwendung, die aus ner Menge Popups besteht. Mal zum Verständnis des relevanten Teils:
- Normale HTML-Seite wird aufgerufen
- Öffnet ein Popup per body onLoad
- In diesem Popup 1 ist ein Link, der eine neue Datei ins Popup lädt
- in dieser neuen Datei ist ein Link, der ein zweites Popup lädt, welches ein Formular enthält

Jetzt soll, wenn das Formular abgeschickt wurde sich das Popup 2 (mit dem Formular) schließen und das darunterliegende Popup 1 soll sich aktualisieren, weil´s Daten vom Formular bekommt. Sowas in der Art wie window.refresh hab ich aber nicht gefunden, also hab ich mir gedacht ich schließ Popup 1 einfach, und öffne es neu. Das klappt aber nicht..ich schaffs nicht das Popup anzusprechen irgendwie :(
Wär schön wenn da jemandem was einfallen würde..ob jetzt auf dem direkten weg mit aktualisieren oder über schließen und wieder öffnen ist mir letztlich egal.

Danke
Avariel
 
Du kannst im Formular das onsubmit-Ereignis abfangen:
Code:
<form onsubmit="sendToParent(); return false;">
Wichtig dabei ist das return false sonst wird die Seite aus dem action-Attribut
aufgerufen.

In der sendToParent-Funktion kannst du dann window.opener wie das window-
Objekt aus dem ersten Popup benutzen:
Code:
 // Code aus dem ersten Popup:
<span id="Foo">Foo</span>

// Code im zweiten Popup:
function sendToParent()
{
    window.opener.document.getElementById('Foo').innerHTML = 'Bar';
}
Jetzt kannst du die Werte aus den Formular-Feldern vom Popup einfach in
Variablen, Eingabe-Felder, etc. aus dem ersten Popup schreiben.
 
Hm..Missverständnis denke ich.
Das Problem ist nicht die Übergabe von Variablen, die ist schon mit PHP und MySQL gelöst. Es geht jetzt nur noch darum, Popup1 zu aktualisieren, damit das MySQL-Statement nochmal neu ausgeführt wird. Ich bin jetzt vielleicht schon ein bisschen weiter.. ich hab Popup1 per window.opener.close() geschlossen. Das Problem ist dann jetzt noch das erneute Aufrufen..mit dem Code den ich mir zusammengezimmert hab, ruft er das Popup1 komischerweise dreimal übereinander auf.
Code:
<script type="text/javascript">
function CheckInput() {
 for(i=0; i < document.forms[0].elements.length; ++i)
  if(document.forms[0].elements[i].value != "")  {
    window.opener.close();
    window.open('eingabe.php','','width=1024, height=768, scrollbar=auto, resizable')
    window.close();
     }
}
</script>
und beim Formular dann noch:
Code:
<form name="eintragung" onSubmit="return CheckInput();">
Also auf deutsch, so wie ich mir das vorstelle bei dem Script:
Wenn der Submit-Buttom gedrückt wird überprüft das Script, ob irgendwelche Werte übergeben werden, wenn ja dann schließt er Popup1, ruft Popup1 wieder auf und schließt sich dann selbst.
Klappt auch fast, nur das er wie gesagt halt Popup1 dreimal wieder öffnet, statt nur einmal.
Ach ja, und gibts ne Möglichkeit das Popup maximiert zu öffnen? Momentan öffne ich das Popup in der geforderten Auflösung und die müssen das halt so hinziehen, das sie alles sehen, aber optimal ist das ja auch nicht.
 
Logisch.... du öffnest jedesmal das Popup, wenn ein Formularfeld etwas enthält.

Gehe alle Formularfelder durch, und wenn eines der Formularfelder etwas enthält, sende das Formular und verlasse die Schleife.
Durch das Aufrufen von "eingabe.php" im Popup werden im Übrigen keinerlei Daten gesendet....

Es sollte in der Art funktionieren können:


Code:
<script type="text/javascript">
function CheckInput()
{
 for(i=0; i < document.forms[0].elements.length; ++i)
  if(document.forms[0].elements[i].value != "")
    {
    p1=window.open('','pop1','width=1024, height=768, scrollbar=auto, resizable=yes')
    p1.focus();setTimeout("window.close()",1000);return true;
    }
return false;
}
</script>
.....
<form onSubmit="return CheckInput();"target="pop1"action="eingabe.php">

Du brauchst das Popup auch nicht jedesmal schliessen, um es dann wieder zu Öffnen....wer weiss...vielleicht wird ja bald ne Popup-Steuer erhoben *lol*, dann wirds teuer.

Vielleicht hab ichs aber auch alles missverstanden ...die Problemstellung ist etwas undurchsichtig :-)
 
Ach so..dann öffnet der für zwei Formularfelder und für den Submit-Button je ein Fenster..das kommt davon wenn man kaum Ahnung von Javascript hat und sich wild Zeug zusammenkopiert :-(
Sorry wenn ich bei der Problemstellung etwas undurchsichtig war...ich will eigentlich nur von Popup2 aus den Befehl geben Popup1 zu aktualisieren, wie mit der F5-Taste quasi. Und da ich da keine direkte Lösung gefunden hab, versuch ichs halt grade über schließen und neu öffnen.
Die Datenübergabe geht schon, die wird anderso per PHP geregelt glaube ich..oh Gott, ich freu mich schon hinterher aufs Dokumentieren, ich weiß ja jetzt schon kaum mehr was ich schon alles gemacht hab :-)
 
Also ich hab mir jetzt mal das hier zusammegebastelt:
Code:
function CheckInput() {
if document.eintragung.date.value != "" or document.eintragung.date2.value != "" or document.eintragung.hour.value != "" or document.eintragung.hour2.value != "" {
window.opener.close();
window.open('eingabe.php','','width=1024, height=768, scrollbar=auto, resizable');
window.close(); }
}
Damit sollte das Problem mit den mehreren Formularfeldern eigentlich behoben sein, soweit ich das verstehe..aber das klappt noch nicht ganz, sieht da jemand nen Fehler?
 
Mir fällt da nur ein kleiner Syntax-Fehler auf.

Du hast vergessen, die if-Bedingung zu Klammern...

if ( Bedingung )
{
...
}

stattdessen schriebst Du:

if Bedingung
{
....
}
 

Neue Beiträge

Zurück