//Check for firstinput dat = document.frmEnquiry.firstinput.value; if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{dato1=tdate.getTime(); var chdato = new Date().getTime()+ (24*60*60*1000); if (chdato>dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }; }
//Check for secondinput dat = document.frmEnquiry.secondinput.value; // alert(dat); if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tSidste overnatning \t- Indtast sidste nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tSidste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{ if(dato1>tdate.getTime()) errorMsg += "\n\tSidste overnatning \t- Dato kan ikke være tidligere end første nat\n" }
}
Ovenstående validering tjekker - bl.a. - for, om der i "Firstinput" ikke indtastes en dato tidligere end om to dage (altså to dage frem fra i dag). I "Secondinput" tjekkes der bl.a. for, om indtastet dato ikke er tidligere end datoen i "Firstinput"-feltet! Så langt så godt!
Det jeg gerne vil have mulighed for at tilføje er, at der i begge felter yderligere skal valideres for indtastede datoer, som ligger længere ude i fremtiden end et halvt år! Hvis datoen ligger mere end et halvt år fremme, skal der komme alert!
Det er faktisk ikke så forfærdeligt afgørende om det er det ene eller det andet. Men for at være på den sikre side, må det jo nok blive 183 dage, da det er nøjagtig halvdelen af et skudår! :-)
//Check for firstinput dat = document.frmEnquiry.firstinput.value; if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{dato1=tdate.getTime(); var chdato = new Date().getTime()+ (24*60*60*1000); if (chdato>dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }else{ var chdato = new Date().getTime()+ (183*24*60*60*1000); if (chdato<dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" }; }
//Check for secondinput dat = document.frmEnquiry.secondinput.value; // alert(dat); if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tSidste overnatning \t- Indtast sidste nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tSidste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{ if(dato1>tdate.getTime()) errorMsg += "\n\tSidste overnatning \t- Dato kan ikke være tidligere end første nat\n" }else{ var chdato = new Date().getTime()+ (183*24*60*60*1000); if (chdato>dato1) errorMsg += "\n\tSidste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" };
Næh, det kan jeg godt se ved at kigge lidt nærmere (for meget cut and paste !-)
-- der udstedes stadig ikke garantier, for jeg gider ikke at opbygge den tilhørende form for at teste igennem (det har jeg vist også haft fat i engang tidligere !-)
//Check for firstinput dat = document.frmEnquiry.firstinput.value; if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{dato1=tdate.getTime(); var chdato = new Date().getTime()+ (24*60*60*1000); if (chdato>dato1){ errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }else{ chdato = new Date().getTime()+ (183*24*60*60*1000); if (chdato<dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" } } }
//Check for secondinput dat = document.frmEnquiry.secondinput.value; // alert(dat); if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tSidste overnatning \t- Indtast sidste nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tSidste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{ if(dato1>tdate.getTime()){ errorMsg += "\n\tSidste overnatning \t- Dato kan ikke være tidligere end første nat\n" }else{ var chdato = new Date().getTime()+ (183*24*60*60*1000); if (chdato>dato1) errorMsg += "\n\tSidste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" } }
-- ja, den er i hvert fald så speciel, at den kan genkendes !o]
-- og jeg ville nok lave nogle detaljer anderledes idag, men netop detaljer (f.eks. ville jeg bruge mine egne Date()-udvidelser til at producere andre datoer !-)
Jeg beklager roenving :-( Jeg var lidt hurtigt ude med at acceptere dit forsøg! Der er stadig noget galt. Der valideres helt fint efter hensigten i feltet "firstinput", men det bliver ikke gjort rigtigt i "secondinput". Der tjekkes stadig på at dato ikke er tidligere end første nat, men uanset hvilken dato jeg indtaster i "secondinput", så tjekkes der som om der er fejl. Et eksempel:
datoen 10/01/2004 indtastes i "firstinput" datoen 20/01/2004 indtastes i "secondinput"
Begge datoer ligger jo fint indenfor det accepterede, men dette valideringen kommer med felbeskeden: "Sidste overnatning Når du benytter denne formular, kan du højst bestille et halvt år frem"
Åh - det er nu ikke helt rigtigt. Hvis de er éns i slutningen af begge blokke virker det stadig ikke efter hensigten. -- Dette skal stå i slutningen af den sidste blok:
Mon det er muligt - i ovenstående validering, at tilføje muligheden for, at der ikke accepteres reservering i bestemte perioder, f.eks. fra 20/12/2004-01/01/2005
//Check for firstinput dat = document.frmEnquiry.firstinput.value; if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{dato1=tdate.getTime(); var chdato = new Date().getTime()+ (24*60*60*1000); if (chdato>dato1){ errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }else{ var noreservation = /^((2\d|3[01])\/12\/2004|01\/01\/2005)$/; if(noreservation.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Ingen reservering i julen\n" }else{ var chdato = new Date().getTime()+ (182*24*60*60*1000); if (chdato<dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" } } } }
Men den tjekker ikke på "noreservation"-datoerne ??
Jeg lavede lige lidt oprydning, så det er lettere at gennemskue flowet, for jeg får umiddelbart rigtige reaktioner på den tidligere lagte !-)
var regex =/^(3[01]|0[0-9]|[12]\d)\/(0[1-9]|1[012])\/\d{4}/; dato1 = "0" var chdato1 = new Date().getTime()+ (182*24*60*60*1000); var chdato2 = new Date().getTime()+ (24*60*60*1000); var noreservation = /^((2\d|3[01])\/12\/2004|01\/01\/2005)$/;
//Check for firstinput dat = document.frmEnquiry.firstinput.value; if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else if (chdato1>tdate.getTime()){ errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }else if(noreservation.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Ingen reservering i julen\n" }else if (chdato2<dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" }
Okay, jeg har nu indsat din kode, efter oprydning, men hvis jeg f.eks. vil reservere 28/12/2004 kommer fejlbeskeden: "Når du benytter denne formular, kan du højst bestille et halvt år frem"
Reserverer jeg 01/10/2004 kommer fejlbeskeden: "Når du benytter denne formular, kan du højst bestille to dage frem"
Jeg har prøvet at rode lidt rundt med det hele og er kommet til nedenstående resultat, som virker helt som det skal. Jeg kunne egentlig godt tænke mig at vide lidt mere om, hvordan man ændrer datoerne heri: "var noreservation = /^((2\d|3[01])\/12\/2004|01\/01\/2005)$/;" Det er lidt volapyk for mig!
Nå, men som sagt så virker det med nedenstående validering.
regex =/^(3[01]|0[0-9]|[12]\d)\/(0[1-9]|1[012])\/\d{4}/; var noreservation = /^((2\d|3[01])\/12\/2004|01\/01\/2005)$/; dato1 = "0" var chdato1 = new Date().getTime()+ (24*60*60*1000); var chdato2 = new Date().getTime()+ (182*24*60*60*1000);
//Check for firstinput dat = document.frmEnquiry.firstinput.value; if(noreservation.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Ingen reservering i julen/nytåret\n" }else if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tFørste overnatning \t- Indtast første nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tFørste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else{dato1=tdate.getTime(); if (chdato1>dato1){ errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du tidligst bestille to dage frem\n" }else if (chdato2<dato1) errorMsg += "\n\tFørste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" } }
var chdato3 = new Date().getTime()+ (182*24*60*60*1000);
//Check for secondinput dat = document.frmEnquiry.secondinput.value; if(noreservation.test(dat)){ errorMsg += "\n\tSidste overnatning \t- Ingen reservering i julen/nytåret\n" }else if (dat == ""||!regex.test(dat)){ errorMsg += "\n\tSidste overnatning \t- Indtast sidste nat i dette format: (DD/MM/ÅÅÅÅ)\n"; }else{ dat = dat.split("/"); var tdate = new Date(parseInt(dat[2],10),parseInt(dat[1],10)-1,parseInt(dat[0],10)); if (tdate.getDate()!=parseInt(dat[0],10)||tdate.getMonth()+1!=parseInt(dat[1],10)||tdate.getFullYear()!=parseInt(dat[2],10)){ errorMsg += "\n\tSidste overnatning \t- Ugyldig dato (DD/MM/ÅÅÅÅ)\n"; }else if(dato1>tdate.getTime()){ errorMsg += "\n\tSidste overnatning \t- Dato kan ikke være tidligere end første nat\n" }else if (chdato3<tdate.getTime()) errorMsg += "\n\tSidste overnatning \t- Når du benytter denne formular,\n\t\t\t kan du højst bestille et halvt år frem\n" }
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.