Avatar billede mrjowns Novice
18. januar 2003 - 20:02 Der er 43 kommentarer og
1 løsning

Submit i parent window...?

Denne er i et popup-vindue:

<script language="JavaScript"><!--

function Validate() {
  errfound = false;
  if (!ValidLength_navn(document.PostUser.Brugernavn.value,0))
  error(document.PostUser.Brugernavn,"Du skal skrive et brugernavn!");
  if (!ValidLength_navn(document.PostUser.Adgangskode.value,0))
  error(document.PostUser.Adgangskode,"Du skal skrive et password!");
  if (!errfound){
  document.PostUser.submit();
  window.close();
  }
}
-->
</script>

Jeg vil gerne have at den skal submitte form'en i parent window...! Kan det lade sig gøre?
Avatar billede bearhugx Nybegynder
18. januar 2003 - 20:06 #1
Ja... Det kan du ...
Du skal navngive din form

<form id="myForm"...>
..
</form>

og så skriver du

document.myForm.submit();

Det skulle virke --- hvis det er det, som du allerede har prøvet, så vil jeg gerne se lidt mere kode, f.eks. fra din form - og den kode, som åbner popup-vinduet...
Avatar billede bearhugx Nybegynder
18. januar 2003 - 20:09 #2
hmm ... din validate kode er i et popup ???  er det meningen ???
Avatar billede mrjowns Novice
18. januar 2003 - 20:10 #3
Men det er ovenstående kode der står i popup-vinduet! Formen er i popup-vinduet. Du kan se hele koden til popup-vinduet her: http://www.kystlivredningdanmark.dk/login.txt

--jowns--
Avatar billede mrjowns Novice
18. januar 2003 - 20:15 #4
Ja, det er meningen - i hvert fald den del af den! Om de indtastede oplysninger er rigtige eller ej finder jeg ud af senere - og hvis de så ikke er rigtige redirecter jeg tilbage til login-boxen med ErrorMode-variablen på!

--jowns--
Avatar billede Slettet bruger
18. januar 2003 - 20:19 #5
Skal det forstås sådan, at du vil submitte informationerne i formularen (som ligger i en popup) til den side, der åbnede popup'en?
I så fald skal du se her:
http://www.eksperten.dk/spm/300919
Avatar billede bearhugx Nybegynder
18. januar 2003 - 20:20 #6
i dit hoveddokument (altså det, som åbner popup'en) laver du en form
<form id="mainForm" action='http://www.klrnet.kystlivredningdanmark.dk/chklogin.asp'>
  <input type="hidden" name="Brugernavn">
  <input type="hidden" name="Adgangskode">
<form>


i din validate-metode gør du så følgende :

function Validate() {
  errfound = false;
  if (!ValidLength_navn(document.PostUser.Brugernavn.value,0))
  error(document.PostUser.Brugernavn,"Du skal skrive et brugernavn!");
  if (!ValidLength_navn(document.PostUser.Adgangskode.value,0))
  error(document.PostUser.Adgangskode,"Du skal skrive et password!");
  if (!errfound){
    document.mainForm.Brugernavn.value = document.PostUser.Brugernavn.value;
    document.mainForm.Adgangskode.value = document.PostUser.Adgangskode.value;
    document.mainForm.submit();
    window.close();
  }
  return false();
}

dvs. sende dataenen til de hidden-felter i dit hoveddokument og submitte den i stedet :-)

/Søren
Avatar billede bearhugx Nybegynder
18. januar 2003 - 20:21 #7
i dit popup-vindues form (PostUser) skal du så ikke have nogen action-parameter
Avatar billede Slettet bruger
18. januar 2003 - 20:21 #8
bearhugx>> Det er en meget mere besværlig metode end den i mit link.
Avatar billede mrjowns Novice
18. januar 2003 - 20:25 #9
Kan du ikke prøve at skrive dit forslag, phoenixv? Hvordan skriver jeg Traget="java script:parent.window;" (bare et forsøg)????

--jowns--
Avatar billede Slettet bruger
18. januar 2003 - 20:26 #10
Hvis du nu gad se på linket...

<form action="bla.php" method="post" target="aabner" onSubmit="opener.name = 'aabner'; return true;">
Avatar billede Slettet bruger
18. januar 2003 - 20:27 #11
I øvrigt: Olebole, hvis du læser dette, så forklar dig venligst mht. vores diskussion i førnævnte spørgsmål! :)
Avatar billede mrjowns Novice
18. januar 2003 - 20:28 #12
Hehe, ja jeg havde set den, men jeg kan ikke forstå den! "Opener.name" - hedder det virkelig det og hvad er "aabner"??
Avatar billede Slettet bruger
18. januar 2003 - 20:34 #13
Det er bare lige et navn, som jeg tildeler vinduet. Det skal du slet ikke spekulere på. Du skal faktisk hverken røre target eller onSubmit.
Avatar billede mrjowns Novice
18. januar 2003 - 20:40 #14
phoenixv > Jeg har jo allerede vinduet jeg vil submitte i åbent! Den åbner et nyt vindue og giver mig en "Unspecified error"!?
Avatar billede Slettet bruger
18. januar 2003 - 20:42 #15
Det ved jeg godt. Den side, som der skal submittes i, har åbnet popup'en, ikke?
Avatar billede mrjowns Novice
18. januar 2003 - 20:44 #16
Popup'en indeholder formen og alle informationerne....! Hvad gør jeg?
Avatar billede mrjowns Novice
18. januar 2003 - 21:01 #17
Avatar billede mrjowns Novice
18. januar 2003 - 21:01 #18
Brugernavn: test
Password: test
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:08 #19
jeg får (efter popup-vinduet) bare en blå side ... er det meningen
Avatar billede mrjowns Novice
18. januar 2003 - 21:10 #20
Nej, det er i det vindue den skal submitte...! :o)
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:12 #21
jeg indtaster test i brugernavn og password ... og trykker submit -- popup-vinduet forsvinder... og derefter sker der ikke en dyt :-)
Avatar billede mrjowns Novice
18. januar 2003 - 21:14 #22
Nej, det har du helt ret i, men det skal der og det er det jeg ikke kan få til at virke - det er det jeg spørger om! Jeg vil gerne have, at resultatet af mit submittede data loades i det blå vindue! Ved du hvordan jeg klarer den?
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:15 #23
har du prøvet phoenixv's svar ?
Avatar billede mrjowns Novice
18. januar 2003 - 21:17 #24
Ja, det virker ikke...! :o(
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:19 #25
er igang med at kigge på det...
Avatar billede mrjowns Novice
18. januar 2003 - 21:21 #26
Jeg prøvede nu med denne:

<form method="POST" name="PostUser" action="http://www.klrnet.kystlivredningdanmark.dk/chklogin.asp" target="myTarget" onsubmit="if(window.opener)opener.name=this.target;return true">

...men den åbnede et nyt vindue og gav mig en fejl! :o( ...unspecified
Avatar billede mrjowns Novice
18. januar 2003 - 21:30 #27
Testede lige denne:

<form method="POST" name="PostUser" action="http://www.klrnet.kystlivredningdanmark.dk/chklogin.asp" target="myTarget" onsubmit="if(self.opener)opener.name=this.target;return true">

men den gav mig: Error: 'window.opener.location' is null or not an object

Når jeg så debugger skriver den der er fejl i denne linie:
<script type="text/javascript">
<!--
window.opener.location.href='http://www.klrnet.kystlivredningdanmark.dk/beskyttet.asp';
window.close();
//-->
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:46 #28
Det kan være at min version er kluntet - men her er den - og den virker (skulle jeg kilse og sige)

Jeg har kodet eksemplet fra bunden, så valideringskode osv. bliver du nød til at indsætte igen ...

Den fungerer på den måde at main.htm åbner et vindue (login.htm) - når vinduet submittes, valideres det - og hvis brugernavn = "Søren", så  sendes data tilbage til main.htm - og main-formet submittes --- Derved kaldes result.htm :-)

her er koden
[main.htm]
<html>
  <head>
    <script>
      function makeWindow(URL) {
        popX=300
        popY=200
        posX=((screen.availWidth/2)-(popX/2))
        posY=((screen.availHeight/2)-(popX/2))
        window.open(URL,"Login","height=200,width=300,toolbar=no,channelmode=no,status=no,location=no,menubar=no,directories=no,scrollbars=no,left="+posX+",top="+posY);
      }
    </script> 
  </head>
 
  <body onLoad="makeWindow('login.htm');">
    <form id="mainForm" action="result.htm" method="get">
      <input type="hidden" name="usr" value="TESTER">
      <input type="hidden" name="pwd">
    </form>
  </body>
</html>

[login.htm]
<html>
  <head>
    <title>Login script</title>
    <script type="text/javascript" language="JavaScript">
      function validate() {
        errfound = true;
        if(document.loginForm.brugernavn.value=="Søren") {
          errfound=false;
        }
        if (!errfound){
          var mainform = opener.document.getElementById("mainForm");
          mainform.usr.value = document.loginForm.brugernavn.value;
          mainform.submit();
          window.close();
        }
        return false;

        alert( opener.document.getElementById("mainForm") );
      }
  </script>
 
  </head>
  <body topmargin="0" leftmargin="0">
 
    <form method="get" name="loginForm" onSubmit="java script:validate();">
      Brugernavn : <input type="text" name="brugernavn" style="width: 140px;" size="20"><input type="submit" value="Login">
    </form>
  </body>
</html>

og til sidst
[result.htm]
<html>
  <body>
    HEJSA
  </body>
</html>

mvh
/Søren Munk Skrøder
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:49 #29
bemærk dog at jeg har sat errfound til at være true fra start -- ud fra den devise, at alle login-forsøg er forkerte, indtil de er blevet valideret ... ergo er errfound (måske så misvisende et udtryk) sat = true;
Avatar billede bearhugx Nybegynder
18. januar 2003 - 21:51 #30
hmm  linien  alert( opener.document.getElementById("mainForm") );  i validate() kan du bare slette  -den var kun med for debug-årsager...
Avatar billede bearhugx Nybegynder
18. januar 2003 - 22:05 #31
kan du bruge det ?
Avatar billede mrjowns Novice
18. januar 2003 - 22:13 #32
DU ER EN GUD!!!!! Nu har jeg kun siddet og prøvet at få dette skide script til at virke i 9-10 timer - WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE, OG NU VIRKER DET!!! ;oD

Tak for din tid!!!!! :-)
Avatar billede bearhugx Nybegynder
18. januar 2003 - 22:38 #33
Tak for din tilbagemelding :-)  - omend jeg ikke vil betegne mig selv som en gud (nok langt mere menneske, end man skulle tro - og javascript-"gud" er jeg i hvert fald ikke ... Jeg er kun lige begyndt at lære det :-)))

/Søren
Avatar billede mrjowns Novice
18. januar 2003 - 22:42 #34
Hmmm, men du klare det rimelig godt!!!

Der er dog en mindre ting der driller: Når login.asp bliver loadet siger den: Error: 'return' statement outside of function

Kan du hjælpe?
Avatar billede mrjowns Novice
18. januar 2003 - 22:47 #35
<script type="text/javascript" language="JavaScript">
      function validate() {
        errfound = true;{
        if (!ValidLength_navn(document.loginForm.Brugernavn.value,0))
        error(document.loginForm.Brugernavn,"Du skal skrive et brugernavn!");
        if (!ValidLength_navn(document.loginForm.Adgangskode.value,0))
        error(document.loginForm.Adgangskode,"Du skal skrive et password!");
        }
        if (!errfound){
          var mainform = opener.document.getElementById("mainForm");
          mainform.usr.value = document.loginForm.Brugernavn.value;
          mainform.usr.value = document.loginForm.Adgangskode.value;
          mainform.submit();
          window.close();
        }
        return false;

        alert( opener.document.getElementById("mainForm") );
      }
  </script>
Avatar billede bearhugx Nybegynder
18. januar 2003 - 22:47 #36
kan jeg ikke lige få en URL så jeg kan se koden...
Avatar billede mrjowns Novice
18. januar 2003 - 22:52 #37
Avatar billede bearhugx Nybegynder
18. januar 2003 - 22:52 #38
here you are ...

function validate() {
    errfound = true;
    if (!ValidLength_navn(document.loginForm.Brugernavn.value,0))
        error(document.loginForm.Brugernavn,"Du skal skrive et brugernavn!");
    if (!ValidLength_navn(document.loginForm.Adgangskode.value,0))
        error(document.loginForm.Adgangskode,"Du skal skrive et password!");

    if (!errfound)    {
        var mainform = opener.document.getElementById("mainForm");
        mainform.usr.value = document.loginForm.Brugernavn.value;
        mainform.usr.value = document.loginForm.Adgangskode.value;
        mainform.submit();
        window.close();
    }
}
Avatar billede mrjowns Novice
18. januar 2003 - 22:57 #39
Noup, hvis man trykker "login" uden at felterne er udfyld fejler den "Object expected"...??? Burde den ikke bare udskrive fejlen?
Avatar billede bearhugx Nybegynder
18. januar 2003 - 23:32 #40
hmmm .. var lige væk (hente pizza)
Avatar billede bearhugx Nybegynder
18. januar 2003 - 23:37 #41
dette er koden taget fra din side og ændret så valideringen egenlig også betyder noget ;-)

<script type="text/javascript" language="JavaScript">
    function validate() {
        usrOk = false;
        pwdOk = false;
       
        if (!ValidLength_navn(document.loginForm.Brugernavn.value,0)) {
            error(document.loginForm.Brugernavn,"Du skal skrive et brugernavn!");
        } else {
            usrOk = true;
        }
       
        if (!ValidLength_navn(document.loginForm.Adgangskode.value,0)) {
            error(document.loginForm.Adgangskode,"Du skal skrive et password!");
        } else {
            pwdOk = true;
        }
       
        if (usrOk && pwdOk) {
            var mainform = opener.document.getElementById("mainForm");
            mainform.usr.value = document.loginForm.Brugernavn.value;
            mainform.usr.value = document.loginForm.Adgangskode.value;
            mainform.submit();
            window.close();
        }
    }
</script>
Avatar billede bearhugx Nybegynder
18. januar 2003 - 23:41 #42
jeg har lige prøvet det på  http://www.kystlivredningdanmark.dk/klrnet.asp og der svarer den da "Du skal skrive et brugernavn", hvis man ikke skriver noget som helst i nogen af felterne...
Avatar billede bearhugx Nybegynder
18. januar 2003 - 23:43 #43
som jeg skrev @ 21:51
så skal
  alert( opener.document.getElementById("mainForm") );

væk ... Det er den ikke endnu....
Avatar billede bearhugx Nybegynder
18. januar 2003 - 23:45 #44
hvis du evt. vil væk fra at den skriver "?usr=test&pwd=test" i
http://www.klrnet.kystlivredningdanmark.dk/chklogin.asp?usr=test&pwd=test

så skal du bare sætte method mainForm til "POST"  (i klrnet.asp)
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