06. april 2004 - 12:17Der 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å ?
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!
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 ?!?
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.
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
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
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
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.