Avatar billede rampagezz Nybegynder
22. februar 2008 - 23:09 Der er 24 kommentarer og
1 løsning

Flere funktioner på knap

Hej,

jeg har en form i et popup vindue, hvor jeg har en "window.close()" funktion på submit knappen.
Jeg ville gerne have den til at lukke vinduet og opdatere hovedsiden, når man klikker submit.

Min kode:

<input name="Submit" type="submit" class="brodtekst" value="Login" onClick="window.close()">

Hvordan tillægger jeg en opdater funktion?

-rampagezz
Avatar billede w13 Novice
23. februar 2008 - 11:31 #1
Hvis du først kører window.close(), vil den lukke vinduet uden at gå videre til næste kommando. Derfor skal vi først opdatere:

onclick="opener.location.reload(true);window.close()"

Bemærk også det lille "C" i "onclick", som er den korrekte syntaks. Attributnavne bør altid stå med småt.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 11:49 #2
Den kommer med denne fejlmeddelelse:
"The page cannot be refreshed without resending the information.
Click Retry to send the information again, or Click Cancel to return to the page that you were trying to view."

Vinduet forbliver åbent, når jeg cancel'er med viser "siden kan ikke vises".
Men den submitter formen, for når jeg lukker vinduet og opdaterer (F5), så har den logget ind med session.
Avatar billede w13 Novice
23. februar 2008 - 12:04 #3
Prøv at sætte reload(true) til reload(false) i stedet og alternativt refresh()
Avatar billede rampagezz Nybegynder
23. februar 2008 - 12:07 #4
Jeg har nu sat reload(false).
Den kommer stadig med samme fejl.
Avatar billede w13 Novice
23. februar 2008 - 12:19 #5
Så må du manuelt sætte url'en på hovedsiden, f.eks.:

onclick="opener.location.href='side.htm';window.close()"
Avatar billede rampagezz Nybegynder
23. februar 2008 - 12:40 #6
Nu står det således: <input name="Submit" type="submit" class="brodtekst" value="Login" onclick="opener.location.href='index.php';window.close()" og den kommer stadig med samme fejl.

Det er vel måske fordi den submitter fra et popupvindue? For den skriver jo at den ikke kan opdatere uden at sende informationerne igen, og det bliver den ved med.
Avatar billede w13 Novice
23. februar 2008 - 12:55 #7
Det er jo hovedvinduet, vi opdaterer, og ikke popup-vinduet. Men hovedvinduet er så også blevet submittet på et tidspunkt, kan jeg forstå?

Der er ikke så meget andet at gøre.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:06 #8
Ok. For lige at beskrive hele forløbet.
Man kommer ind på hovedsiden og kan navigere rundt på siden, hvis man klikker på et medlem, for at se detaljen om medlemmet og man ikke er logget ind.

Så kommer den op med en popup, hvor der står at man skal være logget ind for at se brugerinfo. Derudover er der et link (login), som lukker dette vindue og åbner et nyt popupvindue med en loginform (den som er beskrevet foroven).
Så man kan ikke sige at der er blevet submittet på hovedsiden..
Kan du se en anden løsning?

Jeg har prøvet kun at sætte window.close på submitknappen, men den skal jo også opdatere hovedvinduet og det med at reloade hovedsiden hele tiden holder ikke. :-)
Avatar billede w13 Novice
23. februar 2008 - 13:10 #9
Kan jeg se det? For jeg forstår ikke, at den opfører sig sådan. Den løsning, jeg foreslog, er jo meget simpel, og det er sådan, man gør det.. Så det skal virke.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:11 #10
På selve hovedsiden er der en loginform i en Iframe.
Jeg ved ikke om det er muligt, men hvis man kunne lave window.close på submit i popupvinduet og få den til at sætte markøren i loginformen (Iframen) på hovedsiden, er dette også en løsning.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:17 #11
Sådan ser min login side i popup ud:
<body bgcolor="#546952">
<form name="form1" method="post" action="checklogin.php">
  <table width="250" border="0" cellpadding="3" cellspacing="1" class="logintable" id="login">
<tr>
<td colspan="3" class="menutekst">Login:</td>
</tr>
<tr>
<td width="78" class="brodtekst">Brugernavn</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td class="brodtekst">Password</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
  <td colspan="2"><input type='checkbox' id='huskmig' name='huskmig' value='1' onClick='if(this.checked)return confirm("Bekræft du ønsker at logge automatisk ind fremover")'>
    <label for='huskmig' class="brodtekst"> Husk mig</label>
  </td>
  <td><div align="center" class="brodtekst"><a href="glemt_pass.php"><u>glemt password</u></a></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input name="Submit" type="submit" class="brodtekst" value="Login" onclick="opener.location.href='index.php';window.close()"></td>
</tr>
</table>
</form>
</body>
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:20 #12
Hvis brugerinfo er "true" er den sat til at:
echo '<script type="text/javascript">parent.location.reload(true)</script>';

og det virker også, når man submitter fra Iframen i hovedvinduet, men ikke når man submitter fra popup'en.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:20 #13
Hov. Det skulle måske lige nævnes, at det jeg lige skrev var fra min checklogin.php
Avatar billede w13 Novice
23. februar 2008 - 13:29 #14
Du kan muligvis sætte cursoren i iframet med:

onclick="opener.document.getElementsByTagName('iframe')[0].focus();window.close()"

Men er det kun iframen, der skal opdateres så, eller hvad? Og er det iframen eller hovedsiden omkring iframen, der åbner popupen?
Avatar billede rampagezz Nybegynder
23. februar 2008 - 13:51 #15
Det er hovedsiden der skal opdateres, da der også er en nr.2 Iframe, som indlæser en side, der tjekker om det er VIP login.

Det er hovedsiden, der åbner en popupen.
Her er scriptet som det står nu (hvor den åbner linket på popup åbner en ny popup med loginform):
<a href="java script:void(0)" onclick="fnClose('login.php');">Login</a>

Hvis den skal laves så den lukker sig selv og sætter markøren i Iframe skal den så ændres til:
<a href="calendar_login.php" onclick="opener.document.getElementsByTagName('calendar')[0].focus();window.close()">Login</a> 

Iframen hedder "calendar"

Når det står sådan, åbner den calendar_login.php i sig selv.
Avatar billede w13 Novice
23. februar 2008 - 14:05 #16
getElementsByTagName skal så lige rettes til getElementById og href'en skal også rettes:

<a href="java script:opener.document.getElementById('calendar')[0].focus();window.close()">Login</a>

Det burde vist kunne gøre det.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 14:31 #17
Den skriver denne error, når jeg klikker på login:
Error: 'opener.document.getElementById(...).0' is null or not an object
Avatar billede w13 Novice
23. februar 2008 - 14:56 #18
Ahr, sorry:

<a href="java script:opener.document.getElementById('calendar').focus();window.close()">Login</a>
Avatar billede rampagezz Nybegynder
23. februar 2008 - 15:08 #19
Tja, nu lukker den da vinduet, men den sætter ikke markøren i Iframe... :-)
Avatar billede rampagezz Nybegynder
23. februar 2008 - 15:15 #20
Har lige prøvet med dette:
<a href="java script:opener.document.getElementById('calendar').focus('myusername');window.close()">
Da selve navnet på taginput til brugernavn hedder "mysusername"
Avatar billede rampagezz Nybegynder
23. februar 2008 - 15:16 #21
Men så skriver den error igen.
Avatar billede rampagezz Nybegynder
23. februar 2008 - 15:46 #22
Jeg opgiver... Og laver skriver i popup'en hvor man skal logge ind og sætter den bare til at lukke vinduet.. :-)
Men du skal have point for at gøre så meget for at hjælpe.
Avatar billede w13 Novice
23. februar 2008 - 15:51 #23
Det skulle så være:

<a href="java script:opener.document.getElementById('calendar').contentWindow.document.getElementById('myusername').focus();window.close()">

Det kan du jo lige prøve :)
Avatar billede rampagezz Nybegynder
23. februar 2008 - 15:55 #24
YES..!!! Så virker det... :-)
Tusind tak...
Avatar billede w13 Novice
23. februar 2008 - 15:56 #25
:)
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