Avatar billede apo Praktikant
19. september 2004 - 15:46 Der er 7 kommentarer og
1 løsning

Kontaktformular der validerer og husker indhold

Hej.

Jeg har en kontaktformular, som kører via ASP. Indtil videre har jeg valideret indholdet via javascript, men ønsker nu at validere den udelukkende via ASP... Men her rækker mine evner ikke til :-/

Spørgsmål: Hvordan laver jeg en kontaktformular, der via ASP validerer indholdet, og kommer med en fejlmeddelelse hvis et eller flere af felterne ikke er udfyldt?

Det jeg ønsker er en formular der, ligesom den formular man bruger her på Eksperten når man vil poste et spørgsmål som dette, laver en brake hvis man glemmer at vælge kategorien og derefter skriver en fejlmeddelelse.

Håber at der er én der vil hjælpe mig :-)

Apo
Avatar billede tofte Juniormester
19. september 2004 - 17:03 #1
Du kan evt bruge noget lignende. Formen skal kalde siden selv

<%
dim vishtml
vishtml=true
missing=""
if Request.Form("knap")="Send" then
    if Request.Form("navn")    ="" then missing=missing&",Navn"   
    if Request.Form("kode")    ="" then missing=missing&",Kodeord"   
    if missing="" then
        vishtml=false
        'gør et eller andet eks Response.redirect
    else
    'vores validering er ikke gået så godt
    end if
   
end if%>
<html>
<body>
<%
if vishtml=true then
%>


<%
if missing<>"" then
    Response.Write "Følgende felter mangler at blive udfyldt : "&right(missing,len(missing)-1)
end if
%>
<form action="start.asp" method="post">
Indtast navn <input type="text" name="navn" value="<%=Request.Form("navn")%>"><%if instr(1,missing,"Navn")>0 then Response.Write "*"%><BR>
Indtast kode <input type="text" name="kode" value="<%=Request.Form("kode")%>"><%if instr(1,missing,"Kodeord")>0 then Response.Write "*"%><BR>
<Input type="submit" value="Send" name="knap">
</form>

<%
else%>

Det gik fint, du huskede det hele

<%end if
%>


</body>
</html>
Avatar billede apo Praktikant
19. september 2004 - 17:18 #2
tofte > Jeg kan ikke lige gennemskue dit script :-/

Jeg har disse fire felter der skal valideres:
strName = "<input type=""text"" name=""name"" style=""width: 377px; height: 20px;"">"
strName = "<input type=""text"" name=""email"" style=""width: 377px; height: 20px;"">"
strName = "<input type=""text"" name=""subject"" style=""width: 377px; height: 20px;"">"
strName = "<textarea type=""text"" name=""body"" style=""width: 377px; height: 20px;"">"





Hvis brugeren udfylder Navn, Emne og Besked, men glemmer at udfylde Email, skal der vises en fejlmeddelelse (a'la: Du har ikke udfyldt...), men uden at indholdet i de 3 resterende felter slettes når siden genkaldes.

Jeg har brug for et tydeligere eksempel på hvordan dette laves i ASP
Avatar billede apo Praktikant
19. september 2004 - 17:20 #3
Prøver lige igen... Eksperten sendte mit indlæg, inden jeg var færdig :-)

tofte > Jeg kan ikke lige gennemskue dit script :-/

Jeg har disse fire felter der skal valideres:
strName = "<input type=""text"" name=""name"" style=""width: 377px; height: 20px;"">"
strName = "<input type=""text"" name=""email"" style=""width: 377px; height: 20px;"">"
strName = "<input type=""text"" name=""subject"" style=""width: 377px; height: 20px;"">"
strName = "<textarea type=""text"" name=""body"" style=""width: 377px; height: 20px;""></textarea>"

Hvis brugeren udfylder Navn, Emne og Besked, men glemmer at udfylde Email, skal der vises en fejlmeddelelse (a'la: Du har ikke udfyldt...), men uden at indholdet i de 3 resterende felter slettes når siden genkaldes.

Jeg har brug for et tydeligere eksempel på hvordan dette laves i ASP...

Apo
Avatar billede tofte Juniormester
19. september 2004 - 17:27 #4
i toppen undersøger jeg hvile felter som ikke er blevet udfyldt vha:
if Request.Form("navn")    ="" then missing=missing&",Navn"

hvis feltet ikke er udfyldt, gemmer jeg data om feltnavnet i min variabel missing.

Dette gør jeg med alle de felter som jeg ønsker at validere. Hvis variablen missing er forskellig fra "", så er det jo fordi den indeholder nogle felter som ikke er blevet udfyldt.
Det udnytter jeg længere nede til at spørge
if missing<>"" then
    Response.Write "Følgende felter mangler at blive udfyldt : "&right(missing,len(missing)-1)
end if

Og sidst men ikke mindst. Her undesøger jeg eks om navnet Navn står i variablen missing, hvis den gør, er de jo fordi feltet ikke er udfyldt og derfor laver jeg en stjerne:
<%if instr(1,missing,"Navn")>0 then Response.Write "*"%>

Så alt hvad du skal gøre er sådan set bare i toppen at tilføje en linie for hver felt som du ønsker at validere:
if Request.Form("navn")    ="" then missing=missing&",Navn"

og ud for hvert felt i din form
<%if instr(1,missing,"Navn")>0 then Response.Write "*"%>

Bemærk Navn er det navn du vil have vist, eks "Følgende felter er ikke udfyldt korrekt: Navn"
Avatar billede apo Praktikant
19. september 2004 - 17:56 #5
Jeg kigger på det, men umiddelbart virker det for kompliceret til min underudviklede ASP-hjerne ;-)

Mit nuværende ASP-script er vist på neanderthaler-niveau, så jeg har svært ved at se hvordan jeg kan koble det sammen med det du har vist mig :-/

Men jeg kigger lige på det...

Apo
Avatar billede apo Praktikant
19. september 2004 - 18:35 #6
Hmm... Jeg kan ikke få det til at virke efter hensigten, og har ikke mulighed for at bruge alt for meget tid på det, så jeg holder mig til javascriptet p.t. (det fungerer i det mindste).

Men for at din tid og indsats ikke skal have været forgæves, vil jeg give dig halvdelen af de udlovede points :-)

Apo
Avatar billede apo Praktikant
19. september 2004 - 18:37 #7
Nå, det blev åbenbart alle pointene i stedet :-D

// Lukker

Apo
Avatar billede tofte Juniormester
19. september 2004 - 19:22 #8
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
Kurser inden for grundlæggende programmering

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