Avatar billede websam Nybegynder
06. april 2004 - 12:17 Der er 15 kommentarer og
1 løsning

Valider på datoformat ?

Hejsa,

jeg har et felt i en formular hvor brugeren skal indtaste en dato i formatet dd-mm-yyyy.

Hvordan validere jeg på om brugeren skriver det rigitgt ?

har været ved at kigge på noget i stil med dette :

If Not Len(Left(strDate,2)) = 2 And Len(Right(strDate,4)) = 4 And Len(Mid(strDate,4,2)) = 2 And Mid(strDate,3,1) = "-" And Mid(strDate,5,1) = "-" Then
    ShowError = ShowError & "<b>Datoen</b> skal være i formatet dd-mm-yyyy<br>"
End If

Men det virker ikke og der må jo oxo være en lidt nemmere måde at gøre det på ?

/Websam
Avatar billede medions Nybegynder
06. april 2004 - 12:27 #1
http://roenving.users.whitehat.dk/WD3Input.html

Brug det JavaScript, det vil være det mest optimale! ;-)

//>Rune
Avatar billede websam Nybegynder
06. april 2004 - 12:31 #2
Nu er der bare lige det ved det at jeg skal bruge det i asp og ikke i javascript :o)

/Websam
Avatar billede medions Nybegynder
06. april 2004 - 12:33 #3
Som jeg plejer at sige, hvorfor gøre det i ASP når det kan gøres "live" med JavaScript?
    Der er da ikke noget mere trælst end at siden skal reloade hver gang den skal valideres!

//>Rune
Avatar billede fennec Nybegynder
06. april 2004 - 12:38 #4
jeg ville også bruge javascript, men hvis du vil gøre det i ASP, hvorfor så ikke bruge IsDate() funktionen, som er indbygget i asp :o)
Avatar billede fennec Nybegynder
06. april 2004 - 12:39 #5
Avatar billede websam Nybegynder
06. april 2004 - 12:56 #6
Det er ikke for at være uhøflig men men men jeg skal bruge det i asp og brugeren skal skrive nødagtig dd-mm-yyyy og ikke noget med / måneds navne og ikke noget med javascript :o) Kan i hjælpe ?!?

/Websam
Avatar billede fennec Nybegynder
06. april 2004 - 13:00 #7
Brug isdate() funktionen i ASP. Sæt session.lcid = 1030 i toppen så kører den med dansk datoformat....

session.lcid = 1030
if not isDate(strDate) then
  ShowError = ShowError & "<b>Datoen</b> skal være i formatet dd-mm-yyyy<br>"
end if
Avatar billede fennec Nybegynder
06. april 2004 - 13:04 #8
udbygger lige så den ikke tager navne...

if not isDate(strDate) or len(strDate) <> 10 then
Avatar billede websam Nybegynder
06. april 2004 - 13:32 #9
og så lige et svar fennec :o) Grunden til det er at den kunde jeg er ved at lave dette for har bedt om at det ikke skal være med java men med vb istedet jeg vil klart selv benytte java da det er meget hurtigere end vb og mindre resurce krævende.

/websam
Avatar billede fennec Nybegynder
06. april 2004 - 13:40 #10
Enig... Kunder ved ikke altid hvad der er bedst. Det kender jeg kun selv alt for godt, men det er dem der betaler regningerne :o)
Avatar billede eagleeye Praktikant
06. april 2004 - 13:41 #11
Prøv med:

strDate = "12-24-2004"
Avatar billede websam Nybegynder
06. april 2004 - 13:48 #12
eageleye >> hvordan klare jeg så den ???

/websam
Avatar billede fennec Nybegynder
06. april 2004 - 13:55 #13
Godt set eagleeye....
Jeg skal nu til at ændre alle mine datovalideringer :o(
Avatar billede eagleeye Praktikant
06. april 2004 - 13:55 #14
isDate er fin til nogle ting men den har den uheldighed den kan finde på at bytte rundt på dag og måned. Du kan kombinere den med day og month sådan man tjekker om dagen er imellem 1 og 31 samt månede er imellem 1 og 12

Så du bliver nød til noget i stil med det du har været i gang med.

if isDate(strDate) and int(day(strDate))>=1 and int(day(strDate))<=31 and int(month(strDate))>=1 and int(month(strDate))<=12 then
  'dato ok
end if
Avatar billede fennec Nybegynder
06. april 2004 - 14:11 #15
Det er ikke nok. Den læser bare dagen som 24, men dagen er 12 og måneden er 24 (fejl tastning). Jeg har lige lavet dette script som klarer det:

function MyIsDate(dato)
dim returVal
returVal = false
if len(dato) = 10 then
  if isnumeric(left(dato,2)) then
  if cint(left(dato,2)) >= 1 and cint(left(dato,2)) <= 31 then
    if isnumeric(mid(dato,4,2)) then
    if cint(mid(dato,4,2)) >= 1 and cint(mid(dato,4,2)) <= 12 then
      if isnumeric(right(dato,4)) then
      if isDate(dato) then
        returVal = true
      end if
      end if
    end if
    end if
  end if
  end if
end if
MyIsDate = returVal
end function
Avatar billede fennec Nybegynder
06. april 2004 - 14:27 #16
og nu godtager den kun - som seperator

function MyIsDate(dato)
dim returVal
returVal = false
if len(dato) = 10 then
  if isnumeric(left(dato,2)) then
  if cint(left(dato,2)) >= 1 and cint(left(dato,2)) <= 31 then
    if isnumeric(mid(dato,4,2)) then
    if cint(mid(dato,4,2)) >= 1 and cint(mid(dato,4,2)) <= 12 then
      if isnumeric(right(dato,4)) then
      if mid(dato,3,1) = "-" and mid(dato,6,1) = "-" then
        if isDate(dato) then
        returVal = true
        end if
      end if
      end if
    end if
    end if
  end if
  end if
end if
MyIsDate = returVal
end function
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