"Peter Konner" <konner@mazdapc.dk> writes:
> Jeg er absolut javascript-novice, men har længe savnet en simpel funktion
> til at validere en indtastet dato i formatet DDMMÅÅ.
Overvej om det er et smart format. I internationalt sammenhæng er det et
dårligt format, fordi USA'nere vil komme til at skrive MMDDÅÅ. På længere
sigt er to cifre til årstallet måske for lidt. Jeg kan se at du skiller
ved 80.
> På nettet kan jeg ikke finde noget brugbart (og forståeligt), og jeg har
> derfor skriblet lidt selv, men er gået i stå......
Her er en simpel af slagsen (Date-objektet er din ven :)
---
<script type="text/javascript">
function validDate(str) { // str på formen DDMMÅÅ
if (!/^\d{6}$/.test(str)) { // nej hvis ikke seks cifre
alert("Du skal indtaste en dato på formen DDMMÅÅ!");
return false;
}
var day = Number(str.substring(0,2));
var mth = Number(str.substring(2,4))-1; // Date har Januar=0
var yr = Number(str.substring(4,6));
yr += (yr<80 ? 2000 : 1900); // læg 2000 til hvis <80, ellers 1900
var date = new Date(yr,mth,day);
if (date.getMonth()!=mth || date.getDate()!=day) {
// hvis dato ikke gyldig, så er mindst en af disse forkert.
alert("Datoen findes ikke!");
return false;
}
return date; // returner date-objekt, tæller som true.
}
</script>
> if (ChkDato(document.test.dato) == false) {
Kan skrives kortere som
if (!ChkDato(document.test.dato)) {
> Kan nogle her hjælpe mig videre med denne funktion ?
> Den skal kunne tage hensyn til skudår, men det er vist også det mest
> avancerede !!
Date-objektet tager hensyn til det meste. Det er meget nemmere end
at skulle tænke selv :)
Man skal bare huske reglen, at hvis man laver en Date med
new Date(yr,mth,day)
og datoen ikke findes, så vil Date korrigere datoen så den bliver
lovlig (31. april bliver til 1. maj). Når den korrigerer, så vil
mindst to af de angivne værdier blive ændret. Derfor er det nok
at test at to af dem har den forventede værdi, og jeg undgår
året fordi der stadig er nogle år-2000 problemer :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'