webForumDet fria alternativet

Stänga pop-up OCH uppdatera grundsida, samtidigt?

JavaScript

25 svar · 1 081 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

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>
Medlem sedan nov. 20014 054 inlägg
#2

Beror på hur grundsidan hämtar datan..

Men annars kan du köra en:

window.opener.location = 'sidan.php';

har jag för mig. :)

Medlem sedan juli 20041 271 inlägg
#3

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?

Medlem sedan nov. 20014 054 inlägg
#4

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();">
Medlem sedan juli 20041 271 inlägg
#5

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

Medlem sedan juli 20041 271 inlägg
#6

Någon annan som vet?

Medlem sedan nov. 20014 054 inlägg
#7

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!

Medlem sedan juli 20041 271 inlägg
#8

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.

Medlem sedan jan. 2005713 inlägg
#9

mysko.. hur ser din form ut?

Medlem sedan juli 20041 271 inlägg
#10

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">&nbsp;</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>
Medlem sedan jan. 2005713 inlägg
#11

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..

Medlem sedan juli 20041 271 inlägg
#12

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

Medlem sedan jan. 2005713 inlägg
#13

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>
Medlem sedan nov. 20014 054 inlägg
#14

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.

Medlem sedan jan. 2005713 inlägg
#15

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å?

Medlem sedan juli 20041 271 inlägg
#16

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.

Medlem sedan mars 2004455 inlägg
#17

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?

Medlem sedan jan. 2005713 inlägg
#18

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?

Medlem sedan juni 20014 421 inlägg
#19

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.

Medlem sedan juli 20041 271 inlägg
#20

Hmm...
Med andra ord, vad ska jag göra?

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)