Avatar billede ashansen Nybegynder
24. april 2005 - 15:32 Der er 30 kommentarer og
2 løsninger

Problemer med validering i input boks

Hej forum

Jeg har problemer med at validere nogle input i en form.
Jeg har et input felt hvori der skal indastes et post nummer. Selve problemer betår i, at jeg vil sikre mig, at der er tal der indtastes i feltet, hvilket jeg ikke har kunne finde en løsning på.

Jeg har prøvet mang forskellige ting, men nedenståede vil for mig være en logiske opygning:

if request.form("postnr") <> integer then
response.write("du skal indtaste dit postnummer i tal")
else
udfører funktion
end if

Er der nogen der har et forslag til hvordan jeg kan løse dette?

Mvh

Allan
Avatar billede apo Praktikant
24. april 2005 - 15:39 #1
If IsNumeric(Request.Form("postnr")) Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If

Apo
Avatar billede busschou Praktikant
24. april 2005 - 15:42 #2
evt med længde på også
If IsNumeric(Request.Form("postnr")) And Len(Request.Form("postnr"))=4 Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
Avatar billede apo Praktikant
24. april 2005 - 15:42 #3
Eller mere korrekt:

<%
Dim strPostNr
strPostNr = Request.Form("postnr")
If IsNumeric(strPostNr) Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
%>

Apo
Avatar billede apo Praktikant
24. april 2005 - 15:43 #4
Eller som Busschou foreslår :-)
Avatar billede busschou Praktikant
24. april 2005 - 15:47 #5
hmm et lille kig på funktionen IsNumeric
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctisnumeric.asp
Giver at hvis brugeren indtaster 21.0 så opfattes det som et numeric (tal)
Så den er ikke bullet proof
Så afhængig af hvor sikker du vil være så bør du måske tjekke hvert af de fire tal
Avatar billede busschou Praktikant
24. april 2005 - 15:49 #6
strPostNr = Request.Form("postnr")
If Len(strPostNr)=4 And IsNumeric(strPostNr) And Instr(strPostNr,".")=0 Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
-----
Så tjekkes der om længden er 4, om det er et tal, og at det ikke er et kommatal :o)
Jeg er ikke sikker på om "," også skal med..
Mere sikker kan jeg vist ikke foreslå den
Avatar billede thesurfer Nybegynder
24. april 2005 - 15:53 #7
"=4" er en dårlig metode, da byerne på Grønland (som også er danske), kun har 3 cifre.. det kan også være, at det var andre byer..

Med andre ord: postnummeret kan være på 3 eller 4 cifre..
Avatar billede apo Praktikant
24. april 2005 - 15:55 #8
Så skal den nok nærmere se således ud:

<%
Dim strPostNr
strPostNr = Request.Form("postnr")

If Len(strPostNr) < 4 And IsNumeric(strPostNr) And Instr(strPostNr,".") = 0 Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
%>

Apo
Avatar billede busschou Praktikant
24. april 2005 - 15:55 #9
kommer an på mange ting...kommer også an på om det overhovedet er et dansk postnummer hehe ;o)
Hvis ashansen kun vil vide om det er et tal...så er løsningen i al fald lige for hånden :o)
Avatar billede busschou Praktikant
24. april 2005 - 15:55 #10
Det aller bedste og mest sikre ville jo være at have en tabel over godkendte postnumre.
Og så slå op i den tabel :o)
Avatar billede apo Praktikant
24. april 2005 - 15:56 #11
Busschou > Man kan jo blive ved med at validere armen af når man først går i gang ;-)
Avatar billede thesurfer Nybegynder
24. april 2005 - 15:56 #12
Avatar billede busschou Praktikant
24. april 2005 - 15:57 #13
apo > ja helt klart.. .det er nok overkill ;o) jeg tilslutter mig teste på om det er tal, længden, og så det med kommaet
Avatar billede ranglen Nybegynder
24. april 2005 - 16:04 #14
Jeg kan gode lide regulære udtryk..

Set re = New RegExp
re.Pattern = "^\d{3,4}$"
If re.Test(postnummer) Then
    Response.Write "korrekt postnummer"
End If
Avatar billede apo Praktikant
24. april 2005 - 16:04 #15
Busschou > Det kommer igen an på hvad valideringen skal bruges til og hvor 'fluekn*ppet' det skal være :-)

Til almindelig brug ville jeg også vælge at teste om det er nummerisk, længden og kommaet...

Måske kan den den forbedres en smule således:

<%
Dim strPostNr
strPostNr = Request.Form("postnr")
strPostNr = Replace(strPostNr, ",", "-")
strPostNr = Replace(strPostNr, ".", "-")
If Len(strPostNr) < 4 And IsNumeric(strPostNr) And Instr(strPostNr,"-") = 0 Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
%>

Apo
Avatar billede busschou Praktikant
24. april 2005 - 16:07 #16
apo >> Så er vi jo ude i hvilke operationer som kræver mest ;o)
Ved ikke om asp er dovent evaluerende..men i så fald..hehe
Hov og så lige et lighedstegn da postnummeret vel også godt må være 4
<%
Dim strPostNr
strPostNr = Request.Form("postnr")
If Len(strPostNr) <= 4 And IsNumeric(strPostNr) And Instr(strPostNr,",") = 0 And Instr(strPostNr,".") = 0 Then
  'Udfører funktion
Else
  Response.Write("Du skal indtaste et korrekt postnummer!")
End If
%>
Avatar billede thesurfer Nybegynder
24. april 2005 - 16:09 #17
Man kan muligivs undgå disse problemer, ved at indsætte denne tekst på siden:

Skriv et ordentligt postnummer, din nø'! :-)
Avatar billede busschou Praktikant
24. april 2005 - 16:09 #18
Jeg giver ranglen ret... jeg er bare ikke så hård i regulære udtryk...
Fordelen er at man kan udtrykke meget på lidt plads
Ulempen er at man kan udtrykke meget på lidt plads
Så hvis man ikke er hård i det..så er de måske svære at gennemskue
Avatar billede ashansen Nybegynder
24. april 2005 - 16:10 #19
Hej forum

Hurtige og yderst kompetente svar :)
Jeg vil validere på om inputtet er nummerisk, længden og kommaet, så jeg er yderst tilfreds med jeres hjælp / besvarelser :) rigtig mange tak.

Får i automatisk de point jeg har sat på højkant, ellers må I lige sige til :)

Mvh

Allan
Avatar billede apo Praktikant
24. april 2005 - 16:10 #20
Ja, det er rigtig nok, hehe...

Jeg vil nok bare skrive det således:

Len(strPostNr) < 5 (Vi har sparet = væk ;-) )

Eller lave det med RegExp som Ranglen forslår (Way over my head :-/ )

Apo
Avatar billede ranglen Nybegynder
24. april 2005 - 16:10 #21
If IsNumeric("2e3") Then Response.Write "ok"

er også ok, den har I ikke med :)
Avatar billede busschou Praktikant
24. april 2005 - 16:11 #22
ranglen >> IsNumeric("2e3") giver false.. hvad mener du?
Avatar billede apo Praktikant
24. april 2005 - 16:12 #23
Ashansen > For at du kan give points skal du bede om et svar fra den/de hvis svar du gør brug af; Derfter kan du give points :-)
Avatar billede busschou Praktikant
24. april 2005 - 16:13 #24
så må man hellere lægge et svar :o)
Avatar billede ranglen Nybegynder
24. april 2005 - 16:13 #25
så prøv igen, 2e3 = 2*10^3 = 2000
Avatar billede apo Praktikant
24. april 2005 - 16:13 #26
Derfter = derefter (Jeg bøllebanker snart mit tastatur)
Avatar billede busschou Praktikant
24. april 2005 - 16:13 #27
ranglen...ahh ja ok..den lurede jeg ikke lige
Avatar billede ashansen Nybegynder
24. april 2005 - 16:18 #28
Så vil jeg gerne bede om svar fra apo og busschou
Avatar billede apo Praktikant
24. april 2005 - 16:19 #29
Så får du også et svar fra mig :-)

Apo
Avatar billede busschou Praktikant
24. april 2005 - 16:19 #30
er givet :o)
Når apo har givet så markerer du blot navnene til venstre
Avatar billede ashansen Nybegynder
24. april 2005 - 16:20 #31
Endnu engang tak for hjælpen :)
Avatar billede apo Praktikant
24. april 2005 - 16:21 #32
Glad for at kunne hjælpe, og tak for points :-)

Apo
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