Avatar billede psychodad Nybegynder
04. oktober 2001 - 09:25 Der er 14 kommentarer og
1 løsning

submit data men til popupvindue

Jeg har en form, som når man submitter gerne skulle åbne et popupvindue og sende formdataene med over i det nye vindue:

<form action=\"java script:window.open(\"et_script.php,\"\",\"width=390,height=370,resizable,\");\" method=post>

Problemet er, at dataene fra formen ikke kommer med over i popuppen, når jeg bruger ovenstående.
Der er tale om en hel del data, som jeg ikke uden videre selv kan skrive på linket manuelt.

Hvordan kan jeg få formdataene overført til et popupvindue, når der trykkes submit?

(siderne er php, hvis der er en findé af den vej, jeg kan bruge så vil det også være finno, skal som sagt bare have de data fra form->popupvindue).
Avatar billede jumper Nybegynder
04. oktober 2001 - 09:27 #1
<form action=\"et_script.php\" method=\"POST\" target=\"MitVindue\" onsubmit=\"window.open(\'\',this.target,\'width=390,height=370,resizable\');return true\">

/Thor
Avatar billede jakobandersen Nybegynder
04. oktober 2001 - 09:28 #2
<form action=\"et_script.php\" target=\"_blank\" method=\"post\"/>
Avatar billede psychodad Nybegynder
04. oktober 2001 - 09:43 #3
jotak :)
Avatar billede olebole Juniormester
04. oktober 2001 - 10:17 #4
<ole>
Hmmmmmmm, Thor......hvad så, hvis vinduet ikke har nået at åbne sig, inden der bliver submittet? Ville det ikke være sikrere at lægge en kort timeout på submitten - eller at skrive:
  onsubmit=\"return window.open( ...and all that jazz... );\"
/mvh
</bole>
Avatar billede jumper Nybegynder
04. oktober 2001 - 10:19 #5
onsubmit bliver netop udført før der submittes, og vinduet bliver åbnet før der returneres true for at indikere at formen vitterligt skal submittes. Så det virker skam helt fint, og kan endda bruges i browsere hvor Javascript er slået fra eller ikke eksisterer - der vil det nye vindue blot ikke være 390x370 ;o)

/Thor
Avatar billede olebole Juniormester
04. oktober 2001 - 10:30 #6
Nej, Thor....formen venter ikke til der returneres true, hvis ikke du explicit beder om det  :)
Avatar billede jumper Nybegynder
04. oktober 2001 - 10:33 #7
ole > Jo den gør, vi snakker blot om forskellige ting ;o)

Det du tænker på er hvorvidt siden i window.open kaldet når at blive indlæst - det er ligegyldigt, vi indlæser en tom side. Det eneste der betyder noget er at vi har åbnet et nyt window objekt der har samme navn som vores forms target, så når vi returnerer true og lader formen fortsætte med at submitte vil formen blive submittet til MitVindue - hvilket er det nye vindue.

/Thor
Avatar billede psychodad Nybegynder
04. oktober 2001 - 10:34 #8
som i da kan snakke, hehe
Avatar billede psychodad Nybegynder
04. oktober 2001 - 10:40 #9
btw hvis jeg flytter hele molevitten op i en function i header, hvordan tilgår jeg så \'target\'. Kan jo ikke bruge this.target så...
Avatar billede olebole Juniormester
04. oktober 2001 - 10:41 #10
Vi har haft problemet før har og jeg er sikker på, du ikke har ret....med behørig respekt, forstås  ;o)
Formen venter ikke, men fyrer af, hvad enten du returnerer true eller ej - jaja....den fyrer selvfølgelig ikke af, hvis du returnerer false  :)
Vinduet behøver ikke at have nået at folde sig ud, før der submittes - og så går det galt...jeg er mere end meget sikker, Thor  :)
Avatar billede jumper Nybegynder
04. oktober 2001 - 10:43 #11
psychodad > F.eks. sådan her

<script>
function openTarget(fObj){
  window.open(\'\',fObj.target,\'widh=390,height=370,resizable\');
}
</script>

samt

<form action=\"et_script.php\" method=\"POST\" target=\"MitVindue\" onsubmit=\"openTarget(this);return true\">

/Thor
Avatar billede jumper Nybegynder
04. oktober 2001 - 10:44 #12
olebole > Jeg er skam også mere end meget sikker, og tror blot vi snakker forbi hinanden :)

/Thor
Avatar billede olebole Juniormester
04. oktober 2001 - 10:52 #13
Hmmmmm.....det er ikke min opfattelse, vi snakker om to forskellige ting - tværtimod.

Hvis du fyrer et vindue af på onsubmit, vil det selvfølgelig altid åbne...ingen tvivl om det.
Formen vil fyre af et splitsekund efter den har \'afsendt\' JS-beskeden om at vinduet skal åbne, men vil ikke vente på, det er åbnet helt...hvad enten du returnerer true eller ej (en window.open() returnerer altid true, hvis det lykkes at åbne et vindue, så din return er sådan set overflødig). Er det ikke åbnet helt, vil det gå galt.

Hvis du siger onsubmit=\"return window.open();\", tvinger du formen til at vente med at submitte til vinduet til window.open() har returneret true...så vil det altid gå godt.
/mvh
Avatar billede jumper Nybegynder
04. oktober 2001 - 10:59 #14
Ole > Vi snakkede tilsyneladende om det samme, men nu virker du altså til at være forvirret (no offense ;).

window.open kører altså synkront, ikke asynkront. Når du kalder window.open() \'afsender\' du ikke en forespørgsel på at åbne vinduet på et eller andet tidspunkt - nej, du åbner rent faktisk vinduet med det samme.

Når jeg skriver

alert(\'1\');window.open();alert(\'2\')

vil du lægge mærke til at alert(\'2\') først bliver udført EFTER window.open() har åbnet det nye vindue.

Derudover så returnerer window.open() altså IKKE hverken true eller false, men en reference til det nye vindue (hvordan skulle man ellers lege med det nye vindue? ;).
Den eneste grund til at onsubmit=\"return window.open()\" stadig submitter er fordi selve eksistensen af et objekt, uanset dens type, altid vil indikere true når man bruger den som grundtypen i en booleansk sammenligning.

Puha, det blev langt - finish finito verstanden ? ;)

/Thor
Avatar billede olebole Juniormester
04. oktober 2001 - 12:03 #15
ehhhhhh.....både og  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester