28. august 2005 - 20:14Der er
35 kommentarer og 1 løsning
Kun bokstaver eller tal i form field
Hejsa.
Hvordan kan jeg validere en form sådan at der kun må skrives tal i et input field ? Og Hvordan kan jeg validere en form sådan at der kun må skrives bokstaver i et input field ?
Jeg vil IKKE benytte mig af javascript - helst vbscript
Vil lige omformulere mig lidt... Ovenstående skal ikke forstås sådan at brugeren ikke kan indtast et bokstav i et tal feldt. Brugeren kan indtast hvad han/hun vil. Men feltet skal valideres server side om der kun må være tal eller bokstaver i feltet - sådan at hvis jeg har et felt der f..eks hedder "alder" der må kun være tal i, men brugeren skriver bokstaver i, så skal jeg kunne sende ham en fejl meddelelse i stedet for at få en "type mismatch" fejl..
<% Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d*$"
If regEx1.Test(Request.Form("kunTal")) Then Response.Write "Succes - var et tal<br>" Else Response.Write "Ikke succes - indeholdt andet end tal<br>" End If
Dim regEx2 Set regEx2 = New RegExp regEx2.Pattern = "^[a-zæøå]*$" regEx2.IgnoreCase = True
If regEx2.Test(Request.Form("kunBogstaver")) Then Response.Write "Succes - indeholdte kun bogstaver<br>" Else Response.Write "Ikke succes - indeholdt andet end bogstaver<br>" End If %>
alder er en variable som bærer indputtet fra et felt i min form hvor man skal skrive sin alder.. Får ovenstående fejl hvis der er indtastet bokstaver eller feltet er tomt.
Skal da siges for god ordens skyld at jeg benytter en MySQL database...
If alder < 15 Then minalderfejl = 1 showform = 1 End If
den virker som den skal, det der er problemt er denne
if alder = "" then alderfejl = 1 showform = 1 end if
den når aldrig at printe en "normal" fejl til brugeren, men giver en type mismatch, naturligvis hvis der er indtastet bokstaver, men OGSÅ hvis feltet er tomt
Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d+$"
If regEx1.Test(alder) Then alder = CInt(alder)
If alder < 15 Then ErrAlder = "Dette script er kun tilladt for personer som er mindst 15 år gammel." End If Else ErrAlder = "Du skal angive din alder." End If
If ErrAlder = "" Then ' Gem i databasen Response.Redirect tilNæsteSide.asp End If %>
Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d+$"
If regEx1.Test(Alder) Then Alder = CInt(Alder)
If Alder < 15 Then ErrAlder = "Dette script er kun tilladt for personer som er mindst 15 år gammel." End If Else ErrAlder = "Du skal angive din alder." End If
' Tjekker feltet Navn
ErrNavn = ""
Navn = Request.Form("Navn")
Dim regEx2 Set regEx2 = New RegExp regEx2.Pattern = "^[a-zæøå ]+$" regEx2.IgnoreCase = True
If Not regEx2.Test(Request.Form("Navn")) Then ErrNavn = "Du skal angive dit navn." End If
' Tjekker om alle felter er udfyldt korrekt
If ErrAlder = "" And ErrNavn = "" Then ' Gem i databasen Response.Redirect tilNæsteSide.asp End If %>
Det jeg har vist er den hurtige og beskidte måde. Den pæbe ville se sådan her ud:
<% ' Tjekker feltet Alder
ErrAlder = ""
Alder = Request.Form("Alder")
Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d+$"
If regEx1.Test(Alder) Then Alder = CInt(Alder)
If Alder < 15 Then ErrAlder = "Dette script er kun tilladt for personer som er mindst 15 år gammel." End If Else ErrAlder = "Du skal angive din alder." End If
If ErrAlder <> "" Then ErrAlder = " <b>" & ErrAlder & "</b>"
' Tjekker feltet Navn
ErrNavn = ""
Navn = Request.Form("Navn")
Dim regEx2 Set regEx2 = New RegExp regEx2.Pattern = "^[a-zæøå ]+$" regEx2.IgnoreCase = True
If Not regEx2.Test(Request.Form("Navn")) Then ErrNavn = "Du skal angive dit navn." End If
If ErrNavn <> "" Then ErrNavn = " <b>" & ErrNavn & "</b>"
' Tjekker om alle felter er udfyldt korrekt
If ErrAlder = "" And ErrNavn = "" Then ' Gem i databasen Response.Redirect tilNæsteSide.asp End If %>
Ser du, det virker jo godt nok, ved første øjekast... Men men men.... Hvis man f.eks. skriver en alder under 15, 2 eller flere gange i træk, ja så går den igennem. Det er kun første gang den validerer og giver en fejlmeddelelse ikke 2 3 og 4 gang... :/
tryk på "opret profil" i toppen... prøv så først at indtaste en alder på 14, så får du fejl så prøv 14 igen og vupti (HVIS du altså har udfyldt de andre korrekt)
Dim regEx1 Set regEx1 = New RegExp regEx1.Pattern = "^\d+$"
If regEx1.Test(alder) Then alder = CInt(alder)
If alder < 15 Then showform = 1 alderinputfejl = "[Du skal være minimum 15 år gammel]" End If Else showform = 1 alderinputfejl = "[Alder skal udfyldes]" End If
Da showform = 1 eksekvere fejl scriptet.. Kan den indbygges som jeg har gjort her ?
jeps ovenstående virker.. Takker igen for hjælpen nielle :)
Synes godt om
Ny brugerNybegynder
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.