Avatar billede aerobee Nybegynder
28. august 2005 - 20:14 Der 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
Avatar billede aerobee Nybegynder
28. august 2005 - 20:50 #1
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..

Håber det var formuleret lidt bedre :)
Avatar billede nielle Nybegynder
28. august 2005 - 20:59 #2
F.eks. sådan her:

<form method="post">
<input type="text" name="kunTal"><br>
<input type="text" name="kunBogstaver"><br>
<input type="submit">
</form>

<%
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
%>
Avatar billede aerobee Nybegynder
28. august 2005 - 21:07 #3
hvordan omskriver jeg denne

If regEx1.Test(Request.Form("kunTal")) Then

sådan at jeg kalder en variabel istedet da jeg allerede har requeste en form før ovenstående skal skrives.

Variablen jeg har hedder alder
Avatar billede aerobee Nybegynder
28. august 2005 - 21:10 #4
og kan det lade sig gøre uden at deklarerer sine variabler som du har gjort ?

Her er det jeg har brugt i mine andre forms indtil vidre, og vil gerne have det passer ind, derfor jeg spørger

if alder < 15 then
                            minalderfejl = 1
                            showform = 1
                        end if
                       
                        if navn = "" then
                            navnefejl = 1
                            showform = 1
                        end if
                       
                        if email = "" then
                            tomemailfejl = 1
                            showform = 1
                        end if
                       
                        If Len(email) < 5 Then
                            kortemailfejl = 1
                            showform = 1
                        End If
                       
                        If InStr(email,"@") = 0 Then
                            ingensnabelfejl = 1
                            showform = 1
                        End If

blot et eksempel.. men noget i den stil ala

if alder contains bokstaver then
  alderfejl = 1
  showform = 1
end if

noget i den stil jeg tænkte :/
Avatar billede aerobee Nybegynder
28. august 2005 - 21:15 #5
Grundet mit spørgsmål er fordi jeg får følgende fejl hvis mit felt enten er tomt eller indeholder bokstaver

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'alder' <--- hvis tom eller hvis bokstaver

/ondate.dk/new/public/create.asp, line 155
Avatar billede nielle Nybegynder
28. august 2005 - 21:17 #6
28/08-2005 21:07:01>

Sådan her:

If regEx1.Test(dinVariabel) Then
Avatar billede aerobee Nybegynder
28. august 2005 - 21:17 #7
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...
Avatar billede nielle Nybegynder
28. august 2005 - 21:20 #8
28/08-2005 21:10:23>

Hvis du har fået din variabel "alder" på denne form:

alder = Request.Form("alder")

- så er alder altid en tekst (som tilfældigvis består af lutter tal), og derfor vil sådan noget som:

If alder < 15 Then

- altid fejle.

I stedet skal du lave alder om til tal:

alder = CInt(Request.Form("alder"))
Avatar billede nielle Nybegynder
28. august 2005 - 21:21 #9
... emn så kan du ikke bagefter bruge alder på denne måde:

If regEx1.Test(alder) Then

- idet den forventer en tekst.
Avatar billede aerobee Nybegynder
28. august 2005 - 21:22 #10
hvis jeg benytter alder = CInt(Request.Form("alder")) og indtaster bokstaver
får jeg jeg denne fejl

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CInt'

/ondate.dk/new/public/create.asp, line 85
Avatar billede nielle Nybegynder
28. august 2005 - 21:24 #11
Du skal kombonere de to tjek på denne måde:

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
        minalderfejl = 1
        showform = 1
    End If
Else
    Response.Write "Ikke succes - indeholdt andet end tal<br>"
End If
Avatar billede aerobee Nybegynder
28. august 2005 - 21:24 #12
Naturligvis....
Men hvordan får jeg skrevet en fejlmeddelelse til brugeren i stedet han/hun ser en fejl som han/hun alligevel ikke forstår?
Avatar billede aerobee Nybegynder
28. august 2005 - 21:27 #13
men men men nielle

Jeg har ingen problemer men

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
Avatar billede aerobee Nybegynder
28. august 2005 - 21:28 #14
please help a dummy lol :)
Avatar billede nielle Nybegynder
28. august 2005 - 21:29 #15
Med det pattern:

regEx1.Pattern = "^\d+$"

- jeg har skrevet, behøver du slet ikke at tjeke for den tomme streng.
Avatar billede aerobee Nybegynder
28. august 2005 - 21:34 #16
Får stadig følgende fejl

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'alder'

/ondate.dk/new/public/create.asp, line 138

ved at benytte

Dim regEx1
                        Set regEx1 = New RegExp
                        regEx1.Pattern = "^\d+$"
                       
                        If regEx1.Test(alder) Then
                            alder = CInt(alder)
                            alderfejl = 1
                            showform =1
                        end if
Avatar billede aerobee Nybegynder
28. august 2005 - 21:34 #17
ved indtastning af bokstaver ELLER et tomt felt that is
Avatar billede nielle Nybegynder
28. august 2005 - 21:37 #18
<%
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
    ' Gem i databasen
    Response.Redirect tilNæsteSide.asp
End If
%>

<form method="post">
Alder: <input type="text" name="alder"> <%=ErrAlder%><br>
Navn: <input type="text" name="navn"><br>
<input type="submit">
</form>
Avatar billede aerobee Nybegynder
28. august 2005 - 21:47 #19
Hehehehehe den virkede squ nielle :)

Men hvordan gør jeg så hvis det kun må indeholde bokstaver?
Hvilken linje skal jeg rette i ?

Og så smider du da naturligvis lige et svar :)
Avatar billede aerobee Nybegynder
28. august 2005 - 21:51 #20
Og en anden ting... Hvordan kan jeg formatere min fejlmeddelelse på den måde du har skrevet den?

Eks: <font size="-2" color="#A70000"><b>[Alder skal udfyldes]</b></font>

Kan jeg jo ikke da det står indenfor <%%> tags og jeg kan jo ikke lukke dem bare for at fomatere teksten vel ;)
Avatar billede nielle Nybegynder
28. august 2005 - 21:57 #21
<%
' 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


' 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
%>

<form method="post">
Alder: <input type="text" name="Alder"> <b><%=ErrAlder%></b><br>
Navn: <input type="text" name="Navn"> <b><%=ErrNavn%></b><br>
<input type="submit">
</form>
Avatar billede nielle Nybegynder
28. august 2005 - 21:57 #22
... og et svar :^)
Avatar billede aerobee Nybegynder
28. august 2005 - 21:59 #23
Er du ikke lige frisk og svar på mit spørgsmål 28/08-2005 21:51:44 ???
Er det eneste jeg mangler så jeg kan bliver færdig for idag...

Og tusinde tak for hjælpen nielle, alle points er fortjent :)
Avatar billede nielle Nybegynder
28. august 2005 - 22:00 #24
Det har jeg faktisk allered svaret på:

Alder: <input type="text" name="Alder"> <b><%=ErrAlder%></b><br>
Avatar billede aerobee Nybegynder
28. august 2005 - 22:02 #25
Jaja den printer fejlmeddelelsen... Men jeg vil gerne formatere den med farve og størrelse...
Avatar billede aerobee Nybegynder
28. august 2005 - 22:04 #26
Okay okay.. Har arbejdet for meget idag.. My fault...

Tak for hjælpen nielle :D
Avatar billede nielle Nybegynder
28. august 2005 - 22:10 #27
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
%>

<form method="post">
Alder: <input type="text" name="Alder"><%=ErrAlder%><br>
Navn: <input type="text" name="Navn"><%=ErrNavn%><br>
<input type="submit">
</form>
Avatar billede aerobee Nybegynder
28. august 2005 - 22:10 #28
Hmm øhhh nielle///

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... :/

Hvad kan der være galt?
Avatar billede nielle Nybegynder
28. august 2005 - 22:14 #29
Lyder mærkligt - har du et link hvor jeg kan se det?
Avatar billede aerobee Nybegynder
28. august 2005 - 22:15 #30
jep 2 sek
Avatar billede aerobee Nybegynder
28. august 2005 - 22:19 #31
here you go
http://www.mikejohnsen.dk/ondate/

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)
Avatar billede nielle Nybegynder
28. august 2005 - 22:24 #32
Jeg får da fejlbeskeden hver eneste gang at jeg skriver 14, og den forsvinder når jeg ændre den til 15.
Avatar billede aerobee Nybegynder
28. august 2005 - 22:26 #33
hmm det gør jeg squ ikke hmmm
Avatar billede aerobee Nybegynder
28. august 2005 - 22:32 #34
Nu skal du høre hvad jeg har fundet frem til...

Den bliver KUN eksekveret hvis der også kommer andre fejlmeddelelser, prøve selv at oprette en profil (alt korrekt undtagen alder) så skal du se...

Men det er naturligvis fordi jeg manger denne:

showform = 1

hvor skal jeg putte den ind her?

alderinputfejl = ""

                        Dim regEx1
                        Set regEx1 = New RegExp
                        regEx1.Pattern = "^\d+$"
                       
                        If regEx1.Test(alder) Then
                            alder = CInt(alder)
                       
                        If alder < 15 Then
                            alderinputfejl = "[Du skal være minimum 15 år gammel]"
                        End If
                        Else
                            alderinputfejl = "[Alder skal udfyldes]"
                        End If

Den skal vel være to steder ?
Avatar billede aerobee Nybegynder
28. august 2005 - 22:34 #35
altså feks

alderinputfejl = ""

                        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 ?
Avatar billede aerobee Nybegynder
28. august 2005 - 22:36 #36
jeps ovenstående virker..
Takker igen for hjælpen nielle :)
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