Submit -> varCheck -> popup -> Variablen fehlen
Kris
- javascript
Guten Mittag allerseits :)
ich tüftel grad an einem kleinem Problem und bin ein wenig gestresst von der Sonne. Daher vielleicht ein überfrühtes Posting, aber ich muss eh gleich erstmal neue Getränke kaufen. Eventuell kann mir ja wer von euch derweil helfen.
Ich lasse ein Formular durchlaufen und verweise im Form-Tag via onsubmit auf eine JS Funktion.
<form name="abfrage" action="" method="post" onsubmit="check();">
Der Check endet sofern alle Werte korrekt übergeben wurden mit einer Weiterleitung zu einer weiteren JS-Funktion die ein popup inkl. angegebener URL aufruft.
// Ausgeben eines Alerts falls ein Feld falsch eingegeben wurde
if (al == 0) {alert("Bitte geben sie in die Felder gültige Werte ein");}
// Falls alles korrekt ist weiter zum popup
else {popup('calc.php');}
Nun ist mir natürlich klar das in dem Popup das aufgerufen wird nicht mehr meine, vom Formular übergebenen Variablen, enthalten sind. Dise brauche ich dort jedoch. Wie ist es am cleversten diese dor zu verpacken ?
Bin ich das Problem falsch angegangen und sollte per Return (True/False) das Submit stoppen/zulassen. Falls ja wie kriege ich es hin das ich DANN per Action mein Popup geöffnet kriege. Oder gibt es eine Möglichkeit mit HTML/Submit ein Popup aufzurufen dessen Größe und Inhalt ich bestimmen kann ?
mfg
Kris
hi,
Nun ist mir natürlich klar das in dem Popup das aufgerufen wird nicht mehr meine, vom Formular übergebenen Variablen, enthalten sind. Dise brauche ich dort jedoch. Wie ist es am cleversten diese dor zu verpacken ?
Nutze target im form, um auf das Popup zu zielen.
gruß,
wahsaga
hi,
Nun ist mir natürlich klar das in dem Popup das aufgerufen wird nicht mehr meine, vom Formular übergebenen Variablen, enthalten sind. Dise brauche ich dort jedoch. Wie ist es am cleversten diese dor zu verpacken ?
Nutze target im form, um auf das Popup zu zielen.
gruß,
wahsaga
sowas ähnliches habe ich mir schon gedacht :)
nur kriege ich das gerade nicht unter einen Hut.
Was genau trage ich beim Target ein ? Ich bin ein wenig verwirrt entschuldigt :)
hi,
Was genau trage ich beim Target ein ?
Das, was du immer als target benutzt - einen Fensternamen.
gruß,
wahsaga
Was genau trage ich beim Target ein ?
Das, was du immer als target benutzt - einen Fensternamen.
Das hatte ich bereits probiert :
so sieht die Popup Function aus :
function popup(url) {
var breite = 350;
var hoehe = 350;
var links = (screen.width-breite)/2;
var oben = (screen.height-hoehe)/2;
Fenster = window.open(url ,"Berechnung", "width="+breite+",height="+hoehe+",left="+links+",top="+oben+",resizable=no");
Fenster.focus();
}
und so sieht mein Form aus :
<form name="abfrage" action="" method="post" target="Berechnung">
und dennoch hab ich die Variablen nicht in meinem neuen Fenster O_o
Hallo,
Grundsätzlich:
Formulardaten in Popup-Fenster leiten
Wichtig ist:
Die Adresse, die du window.open() übergibst, ist hingegen unwichtig. Die wird direkt nach dem Öffnen des Fensters eh überschrieben, schließlich leitet das target-Attribut das Formular-Absenden in das Fenster. Deshalb übergibt man üblicherweise »about:blank« oder ruft erst einmal für die paar Millisekunden ein anderes leeres Dokument auf.
Mathias
Bin ich das Problem falsch angegangen und sollte per Return (True/False) das Submit stoppen/zulassen.
Ja, wenn eine Eingabe falsch ist, zeigst du einen alert und beendest dann die check-Funktion vorzeitig mit return false - sodass das Popup nicht geöffnet wird.
Du musst auch notieren:
onsubmit="return check();"
Dieses erneute »return« ist wichtig, damit der Rückgabewert von check() als Rückgabewert des ganzen submit-Event-Handlers wirkt.
(Steht auch so im Beispielcode, den ich im anderen Posting verlinkt habe. Nur zur Erläuterung.)
Falls ja wie kriege ich es hin das ich DANN per Action mein Popup geöffnet kriege.
Wenn alle Eingaben richtig sind, dann öffnest du das Popup. Wie gesagt erst einmal mit einem leeren Dokument wie about:blank.
Dann ist einfach das Ende der check-Funktion. Du kannst noch return true zurückgeben, das ist aber nicht nötig.
Wenn also JavaScript den submit-Event auf diese Weise behandelt hat, startet der Browser die ganz normale Formularverarbeitung. Er schickt die Formulardaten mit einer POST-Anfrage an die Adresse, die du im action-Attribut angegeben hast.
Das zusätzliche target-Attribut sorgt dafür, dass der Browser die Serverantwort im Fenster mit diesem Namen zeigt - und das ist eben das zuvor geöffnete Popup-Fenster.
Oder gibt es eine Möglichkeit mit HTML/Submit ein Popup aufzurufen dessen Größe und Inhalt ich bestimmen kann ?
Nicht direkt - deshalb nimmt man den beschriebenen Umweg (erst ein leeres Fenster mit einem bestimmten Namen öffnen, dann per target die Antwort ins Fenster leiten).
Mathias
dank dir so langsam steige ich durch ;)
hab noch ein paar kleine Schönheitskorrekturen aber das wird schon.
zum beispiel öffnet sich das ALERT Fenster 2mal ...
if (al == 0) {alert("Bitte geben sie in die Felder gültige Werte ein");return false;}
evtl. liegts hier dran ...
mfg
KRIS