"Peter" <pkhn@kommunedata.dk> writes:
> Jeg skal have valideret en datoindtastning i en form vha. et jscript.
Det lyder som en opgave for Dr. J.R. Stockton:
<URL:
http://www.merlyn.demon.co.uk/js-dates.htm>
(alt hvad du aldrig vidste du behøvede at vide om datoer)
> Den "store" løsning ville være, at brugeren valgfrit kunne indtaste datoen
> som f.eks
> ddmmåå
> ddmmmåå
> dd-mm-åå
> dd-mm-åååå
> dd/mm-åå
> osv., men jeg kan sagtens tvinge brugeren til kun at bruge eet format.
Det er nemt at fjerne "-" og "/" og så tjekke om der er seks eller otte
cifre. Det er sværere hvis man gerne vil skrive et-ciffrede måneder og
dage, eller hvis man vil skrive månederens navne. Men det kan alt sammen
gøres.
> Findes der en jscript-funktion til at validere sådan en dato ?
Hvad mener du med "validere"? Tjekke at det faktisk er en dato, og ikke
fx den 30 februar?
Hvis ja, så er der en metode:
Først skal input parses så du har måned, dato og år som tal (husk
at lade månederne starte ved nul=Januar).
Så laves et dato-objekt med
var tjekDato = new Date(aar,maaned,dag);
Til sidst tjekkes at resultatet er den samme dag som man bad om:
tjekDato.getFullYear()==aar && tjekDato.getMonth == maaned && ...
(det er tilstrækkeligt at tjekke to ud af tre).
Det virker fordi Date-konstruktoren normaliserer datoen. Hvis du beder
om den 30. februar i et år hvor der ikke er skudår, så laver den det
om til 2. marts (30.-dagen efter begyndelsen af februar).
> Eller skal jeg lave 3 select-felter (dag+måned+år), der dog virker uhandy ?
Det mindst un-handy er en kalender man kan klikke på, men ellers vil jeg
foreslå tre tekst-input. Undgå select-elementer, de suger på så mange måder.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:
http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'