25. februar 2005 - 14:40Der er
18 kommentarer og 1 løsning
Luk popup og load anden siden ved submit
Jeg skal lige have lidt hjælp til en nok simpel ting.
Jeg skal ved klik på en submit knap i et popup vindue, lukke vinduet, og loade en anden side, på den bagvedliggende browser.
Altså hovedside viser en oversigt over ordre, klikker man på en bestemt ordre, bliver den åbnet i et popup-vindue. Her har jeg så lavet en knap med onclick på til at lave en kopi af ordren. Det fungere godt nok, men den nye oversigtsside bliver vist i popupvinduet. Det skal skal, men derimod skal vinduet lukkes, og oversigten skal vises i hovedsiden.
Hvordan skal min onclick så se nu på undersiden. Pt. ser den sådan ud -> onclick="this.form.action='/tilbud_copy_process.php?copyid=<?php echo $res['tilbudsnummer']; ?>'"
og det er jo klart nok at this.form.action, reloader i det aktuelle vindue.
<scenario> Du har en form i en popup: <form action="" method="post" target="mother" onsubmit="opener.name='mother';">
Du har et element med en onclick, som sætter formens action: onclick="this.form.action='/tilbud_copy_process.php?copyid=<?php echo $res['tilbudsnummer']; ?>'" </scenario>
Onclicken laver jo ikke noget om i form-tagget andet end action, så hvis du submitter normalt (med en submit-button e.l. !-) vil onsubmit blive kørt, og der sætte opener-vinduets navn til det samme, som target er på formen ...
-- det kan så være relevant at sørge for at popup-vinduet lukkes efter et lille stykke tid (100 ms. e.l.), men det er jo en anden ting !o]
Du skal ikke gøre mere, for opener er det vindue, som åbner, men det har bare ikke noget navn, hvis det er brugerens eget åbnede vindue, hvorfor vi tildeler den et, så det kan bruges som target !-)
Popup'en bliver godt nok lukket og "moder" vinduet arbejder videre, men der udføres faktisk ingen ting.
Ved klik på ordre-knappen, skal den kalde en proces-fil, som gerne skulle skrive i db'en, med nogle oplysninger, bl.a. ændre tilbudet til en ordre, men det sker ikke. Hovedvinduet kører bare videre med udfyldelse af de næste vinduer i popup'en.
Det vil altså sige, at jeg skal have den til at hente forskellige sider, alt efter om der trykkes på Ordre, Rev, Kopi eller Foresæt, men selvom jeg har onClick på, så henter de alle sammen, som om de hed Foresæt, altså bruger actionen som står i formen.
Fra hovedsiden åbner jeg det enkelte tilbud i et popup-vindue. Her har jeg 4 submit knapper, "Fortsæt" hvis action ligger som default på formen, og gemmer oplysninger og "bladre" videre (det er sådan at oplysningerne er fordelt over flere sider), Revision, Kopi, og Ordre. De sidste 3 skal henholdsvis lave en ny revision, en kopi eller en ordre af tilbudet. Jeg har kun lavet for kopi-knappen, og får jeg den til at virke ordentligt så er den ingen sag, at få de andre til at virke, forhåbentlig...
Nå men Kopi-knappen har en onClick, som kalder denne JavaScript-funktion: function launchKopi(ordre){ window.open('/deling.php?ordreId=<?php echo $res['id']; ?>', 'kopiPop', ''); window.close(); }
tilbud_copy_process.php sørger så for at lave en kopi at tilbudet, for til sidste at lave en ny header: header('Location: /salg/tilbud/'); (via htaccess finder den ud af hvad siden hedder)
Dette gør at jeg nu var 2 vinduer åbne, et med tilbudsoversigten, hvor jeg åbnede det enkelte tilbud, og den nye oversigt over forespørgelser, indeholdende kopien af ordren. Så det virker godt nok, jeg skal bare kun ende en 1 åbent vindue, kan det løses på denne måde, men en eller anden smart kodestump?
kan det gør det lettere og hvordan? Du må undskylde, men jeg er helt rundt på gulvet lige nu, og så fordi jeg multitasker, hvor jeg fejlsøger noget andet.
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.