Avatar billede gedebuk Nybegynder
22. februar 2002 - 16:19 Der er 17 kommentarer og
2 løsninger

Resette form fra anden side

Hejsa!

Jeg har en form:
<form method='post' name='mail' action='../mail/sendmail.asp' target='_top'>
...

Kan jeg på en eller anden måde få resat formen fra sendmail.asp-siden?

Kan man evt. få "trykket" på knappen fra den anden side:
<br><input type='reset' value='Slet alt'>
Avatar billede bernhof Nybegynder
22. februar 2002 - 16:54 #1
hvis du åbner sendmail.asp i samme vindue, kan man ikke gøre det, som du siger...
kan du uddybe hvad det skal bruges til, så er det lidt nemmere at komme med en løsning med problemet! :)
Avatar billede gedebuk Nybegynder
22. februar 2002 - 17:05 #2
Jeg har i mailform.inc følgende ASP-kode:
function showform(site)
  Response.write "<center>"
  Response.write "<form method='post' name='mail' action='../mail/sendmail.asp' target='_top'>"
  Response.write "<input type='hidden' value='" & site &"' name='site'>"
  Response.write "Dit navn:"
  Response.write "<br><input type='text' size='25' name='name'><br><br>"
  Response.write "Din email-adresse:"
  Response.write "<br><input type='text' size='25' name='email'><br><br>"
  Response.write "Emne:"
  Response.write "<br><select name='subject' size='1'>"
  Response.write "<option value='Hilsen'>Hilsen"
  Response.write "<option value='Forslag'>Forslag til hjemmesiden"
  Response.write "<option value='Andet'>Andet"
  Response.write "</select>"
  Response.write "<br><br>Besked:"
  Response.write "<br><textarea name='body' cols='60' rows='15' wrap='PHYSICAL'>Skriv din hilsen</textarea>"
  Response.write "<br><input type='submit' value=' Send '>"
  Response.write "<br>Der kommer en bekræftelse, så hav tålmodighed!"
  Response.write "<br><br><input type='reset' value='Slet alt'>"
  Response.write "</form>"
  Response.write "</center>"
end function

Ovenstående ASP-kode bliver sat ind i på en HTML-side.

Så har jeg en anden fil (sendmail.asp), som formen referer til (altså action='../mail/sendmail.asp'). Deri er der:
... (snip) ...
site        = Request.Form("site")
name        = Request.Form("name")
senderEmail = Request.Form("email")
subject    = Request.Form("subject")
recipient  = site & "@mads-p.dk"
body        = Request.Form("body")
... (snip) ...
  Set JMail = Server.CreateObject("JMail.SMTPMail")
  JMail.ServerAddress = "mail.mads-p.dk"
  JMail.Sender      = senderEmail
  JMail.Subject      = "Fra: " & name & " - " & subject & " - " & site
  JMail.AddRecipient recipient
  JMail.Body        = body
  JMail.Priority    = 3
  JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
  JMail.Execute
  Response.write "<H1>Hej " & name & "!</H1> <br>"
  Response.write "<H2>Din e-mail er sendt til: " & recipient & "</H2>
... (snip) ...
Lige _HER_ vil jeg gerne resette formen, hvorfra dette er kaldet, for at indikere, at det er gået godt. Kan det lade sig gøre på en eller anden måde?
Avatar billede olebole Juniormester
22. februar 2002 - 17:42 #3
<ole>

frames.FrameNavn.document.FormNavn.reset();

/mvh
</bole>
Avatar billede gedebuk Nybegynder
22. februar 2002 - 19:32 #4
hmmm, det kan jeg ikke få til at virke...

Jeg skriver:
Response.write "<script>document.mail.reset();</script>"

Er det forkert? Er det evt. fordi, mail-formen ikke kendes, der hvor reset() kaldes?
Avatar billede ras2000 Nybegynder
25. februar 2002 - 17:00 #5
Nej du blander tingene lidt sammen. Al din kode i asp foregår serverside. Det med at resette formen foregår klientside. Du kan lave det sådan her, men det har ikke helt den mening du går efter:
Response.write "<H2 onload='frames.FrameNavn.document.FormNavn.reset()'>Din e-mail er sendt til: " & recipient & "</H2>".
Den vil så resette din form når din browser når til at have loadet det stykke.
Men det kræver at din form ligger i en frame der hedder FrameNavn, og at formen hedder formNavn, osv. Den må jo være åben et eller andet sted, for at du kan resette den.
Avatar billede gedebuk Nybegynder
25. februar 2002 - 17:04 #6
ok, jeg prøver igen. Men min side ligger jo ikke i et frame, så hvad skal jeg skrive i stedet for 'FrameNavn'?
Avatar billede ras2000 Nybegynder
25. februar 2002 - 17:07 #7
Jamen hvor ligger din form henne? Så vidt jeg kan se, så har du target sat til _top, hvilket gør at din sendmail.asp fylder hele browseren. Så kan brugeren vel ikke se formen mere. Den er ikke i browseren mere. Hvordan og hvorfor vil du så resette den?
Avatar billede gedebuk Nybegynder
25. februar 2002 - 17:12 #8
Jo, ser du :-)
Det er sådan, at når der er sendt en e-mail, så kommer der en bekræftelse på, at den er sendt. Derefter bliver brugeres sendt tilbage igen (med 'java script:history.go(-1)'). Dvs. at formen jo stadig ligger på den gamle side, men stadig er fyldt ud med de oplysninger, der nu bare skal slettes. Det kan også sagtens være, at det er umuligt at gøre, som jeg gerne vil, men det er da et forsøg værd :-)
Hvis det er, så er du da velkommen til at prøve, hvordan det er lige nu på: http://www.mads-p.dk/3z/kontakt.asp
Avatar billede ras2000 Nybegynder
25. februar 2002 - 17:18 #9
Føj en <%request.expires = 0%> op i toppen af den første side. Så genindlæser den siden på ny.
Avatar billede gedebuk Nybegynder
25. februar 2002 - 17:20 #10
OK, så tror jeg selv på, at det kan løses :-)
Takker mange mange for hjælpen. Også for din lille test!
Laver du ikke lige et svar, så du kan få dine point?
Avatar billede ras2000 Nybegynder
25. februar 2002 - 17:24 #11
Svar!
Avatar billede gedebuk Nybegynder
25. februar 2002 - 18:02 #12
Lige en lille kommentar. Det er response.expires og ikke request.expires... Men men men, det virker faktisk ikke. Problemet må være, at siden ikke genlæses, når man bare sendes tilbage med history.go(-1)
Avatar billede ras2000 Nybegynder
25. februar 2002 - 18:09 #13
Det første har du ret i, det er mig der ikke har asp'et i noget tid.
Du kan løse det andet med at linke tilbage, i stedet for at bruge history.go.
du har en refresh ... url = javascript history.go(-1)
der kan du bare skrive den rigtige url til siden.
altså url = 'http://www.mads-p.dk/3z/kontakt.asp'
Så burde den virke.
Men jeg troede egentlig at response.expires også virkede med tilbage funktionen. Er du sikker på at du ikke kigger på en gammel version af siden?
Prøv for en sikkerheds skyld at lukke alle dine vinduer ned, og røv det hele igen. Jeg mener at response... tvinger browseren til at genindlæse.
Avatar billede ras2000 Nybegynder
25. februar 2002 - 18:10 #14
Der skulle stå prøv, ikke røv, sorry.
Avatar billede gedebuk Nybegynder
25. februar 2002 - 18:14 #15
hehe, det er helt i orden, din røv :-) (positivt ment!)
Jeg er godt klar over, at jeg kan løse det ved at angive den specifikke url, men problemet er bare, at jeg går ind får "re-use", og jeg bruger nemlig samme ASP-kode på flere sider, så jeg vil være lidt ked af at begynde at hardcode det på den måde. Hvis du forstår :-)
Hmmm, men det kan nok bare ikke lade sig gøre på andre måder.... :(
Avatar billede ras2000 Nybegynder
25. februar 2002 - 18:25 #16
Helt alternativt kan du lave en onload funktion, der fylder dine felter ud som du vil.
Og det er da klart det fedeste at undgå at hårdkode sin urler.

funktionen kunne se sådan her ud:
function nystart(){
document.mail.name.value='';
document.mail.email.value='';
...osv
}
Avatar billede ras2000 Nybegynder
25. februar 2002 - 18:25 #17
Så skal du lige kalde den i dit body tag
<body onload="nystart()">
Avatar billede ras2000 Nybegynder
25. februar 2002 - 18:26 #18
Ups, nu vrøvler jeg da lidt.
Det er nemmere at skrive sådan her
<body onload="document.mail.reset()"> og så droppe den funktion.
Avatar billede gedebuk Nybegynder
25. februar 2002 - 19:11 #19
Yes, så virker det susme :-)
Endnu engang tak!
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