Beror på hur grundsidan hämtar datan..
Men annars kan du köra en:
window.opener.location = 'sidan.php';
har jag för mig. :)
25 svar · 1 081 visningar · startad av Guldstrand
Jag har ett pop-up fönster där man fyller i ett formulär som sedan ska postas/sparas i mysql.
Frågan är, hur stänger jag pop-up fönstret OCH uppdaterar grundsidan (parent) samtidigt, när man klickar på submit-knappen?
Använder följande kod till pop-up fönstret:
<script>
function NyttAmne(){
myleft=(screen.width)?(screen.width-500)/2:100;mytop=(screen.height)?(screen.height-500)/2:100;
settings='top=' + mytop + ',left=' + myleft + ',width=500,height=500,location=no,directories=no,menubar=no,toolbar=no,status=no,scrollbars=no,resizable=no,fullscreen=no'
PopupWin=window.open('posta_amne.php','PopupWin', settings);
PopupWin.focus();}
</script>
<a href="javascript:NyttAmne()">Nytt ämne</a>
Beror på hur grundsidan hämtar datan..
Men annars kan du köra en:
window.opener.location = 'sidan.php';
har jag för mig. :)
Fredde Mannen skrev:
Beror på hur grundsidan hämtar datan..
Men annars kan du köra en:
window.opener.location = 'sidan.php';har jag för mig. :)
Nu förstår jag inte riktigt. :r
Var ska jag ange den koden?
Frågan är, hur stänger jag pop-up fönstret OCH uppdaterar grundsidan (parent) samtidigt, när man klickar på submit-knappen?
Ex. på hur vi kan i popupen posta ett formulär och stänga fönstret och uppdatera det fnster som anropade popupen. Här har jag använt button med en onclick-event.
<script type="text/javascript">
function SubmitForm() {
document.forms[0].submit();
window.opener.location = 'tackar.php';
self.close();
}
</script>
<input type="button" onclick="SubmitForm();">
Fredde Mannen skrev:
Ex. på hur vi kan i popupen posta ett formulär och stänga fönstret och uppdatera det fnster som anropade popupen. Här har jag använt button med en onclick-event.
<script type="text/javascript"> function SubmitForm() { document.forms[0].submit(); window.opener.location = 'tackar.php'; self.close(); } </script> <input type="button" onclick="SubmitForm();">
Jag lade till koden ovan i pop-up fönstret, men det hjälpte inte.
(Fönstret stängdes alltså inte.)
Tänker jag fel? :l
Någon annan som vet?
Kort exempel:
test.htm
<html><head><title>Test</title>
<script type="text/javascript">
function popup(url) {
window.open(url,'fnster','width=400, height=400');
}
</script>
</head><body>
<a href="javascript:popup('testa.htm');">test</a>
</body></html>
testa.htm
<html><head><title>Test</title>
<script type="text/javascript">
function SubmitForm() {
document.forms[0].submit();
window.opener.location = 'http://www.google.se/';
self.close();
}
</script>
</head><body>
<form action="testa.htm">
<input type="button" value="Spara" onclick="SubmitForm();" />
</form>
</body></html>
Den ena öppnar en popup, sidan i popupen gör en postning till sig själv, för att sedan uppdatera sidan som anropade popupen, för att sedan stänga sig själv!
Lade till:
<script type="text/javascript">
function SubmitForm() {
document.forms[0].submit();
window.opener.location = 'forum.php';
self.close();
}
</script>
onclick="SubmitForm();"
..i pop-up fönstret (posta_amne.php)
Men varken pop-up fönstret stängdes, eller sidan som anropade pop-up:en (forum.php) uppdaterades.
mysko.. hur ser din form ut?
stattin skrev:
mysko.. hur ser din form ut?
<form method="post" action="posta_amne.php" id="commentform">
<small>Ämne:</small><br />
<input type="text" name="amne" id="amne" size="50" /><br />
<small>
<script type="text/javascript">
displaylimit("","amne",50)
</script>
</small>
<br /><br />
<small>Inlägg:</small><br />
<textarea name="text" id="text" cols="50" rows="10"></textarea><br />
<small>
<script type="text/javascript">
displaylimit("","text",255)
</script>
</small>
<br /><br />
<table width="90%" border="0">
<tr>
<td><small>Ditt namn:</small><br />
<input type="text" name="av" id="av" size="30" /></td>
<td><small>Från:</small><br />
<input type="text" name="fran" id="fran" size="30" /></td>
</tr>
<tr>
<td><small>E-postadress:</small><br />
<input type="text" name="epost" id="epost" size="30" /></td>
<td><small>Ange följande kod:</small><br />
<img src="randomimage.php" alt="" class="left" />
<input type="text" name="imagecode" id="imagecode" size="4" title="obligatoriskt" /></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="submit" type="submit" class="f_button" value="posta svar" onclick="SubmitForm();" />
</div></td>
</tr>
</table>
</form>
hmm.. jag vet inte, kanske har det att göra med att du har type="submit" och dessutom postas formuläret från funktionen SubmitForm() också, kanske type="button" löser det. Det tråkiga då är att möjligheten trycka enter försvninner. Men just nu måste du ju se om det funkar att stänga ett fönster osv..
stattin skrev:
hmm.. jag vet inte, kanske har det att göra med att du har type="submit" och dessutom postas formuläret från funktionen SubmitForm() också, kanske type="button" löser det. Det tråkiga då är att möjligheten trycka enter försvninner. Men just nu måste du ju se om det funkar att stänga ett fönster osv..
Hmm.. om jag ändrar från "submit" till "button", hur ska jag då kunna testa om det fungerar, då jag inte kan posta formuläret. :l
Guldstrand skrev:
Hmm.. om jag ändrar från "submit" till "button", hur ska jag då kunna testa om det fungerar, då jag inte kan posta formuläret. :l
Jo eftersom javascriptet postar formuläret åt dig först innan det uppdaterar och stänger.
<script type="text/javascript">
function SubmitForm() {
[B]document.forms[0].submit();[/B]
window.opener.location = 'forum.php';
self.close();
}
</script>
alternativt har du kvar type="submit" och sätter i form-taggen
onsubmit="return SubmitForm();" och tar bort raden document.forms[0].submit(); från javascriptet.
tanken med button vara ju bara för att se om
window.opener.location = 'forum.php';
self.close();
funkade som det skulle men måste man inte ha return true; också?
Fredde Mannen skrev:
alternativt har du kvar type="submit" och sätter i form-taggen
onsubmit="return SubmitForm();" och tar bort raden document.forms[0].submit(); från javascriptet.
Nu stängs fönstret, samt sidan uppdateras... MEN formuläret postas inte.
Alltså, ingen information sparas i mysql, och all validering av input-fält, körs inte.
Kan du prova att byta ut:
<script type="text/javascript">
function SubmitForm() {
window.opener.location = 'forum.php';
self.close();
}
</script>
mot:
<script type="text/javascript">
function SubmitForm() {
window.opener.location = 'forum.php';
setTimeout("self.close()",3000); //vänta 3 sekunder innan self.close() körs
return true;
}
</script>
Problemet är säkert att all javascript kod ska köras först och pga att fönstret stängs när raden self.close(); körs så hinner aldrig formuläret postas. Men kan du inte lägga in att sidan ska stängas när man har kommit till posta_amne.php?
men när väl submit körs så kommer man ju till en annan sida? Du får nog köra stängningen efter att du postat datan.
edit/ eller nej det gjorde man ju inte men skriv ut self.close() med echo i php scriptet.. eller har php nån funktion för att stänga fönster?
Det är ju sjukt mycket intelligentare att uppdatera window.opener, sedan submita datan för att sedan på sidan som tar emot datan spotta ut javascriptet för att stänga sidan. Då slipper man bry sitt huvud med om man ska submitta eller stänga sidan först. Olika läsare lär ju ha olika implementationer om de ska exekvera nån mer kod efter att den har submittat/stängt fönstret.
Hmm...
Med andra ord, vad ska jag göra?