pailukterN Skrevet 4. februar 2009 Del Skrevet 4. februar 2009 Hei, nå er jeg i ferd med å gå på veggen i forhold til det å validere at man har fylt ut rett på et form. Jeg prøver å få javascriptet til å validere at datoen brukeren skriver inn er minst en dag frem i tid, og at datoen ikke ligger i fortiden. Så langt har jeg kommet opp med: function checkdate(input){ var validformat=/^\d{2}\.\d{2}\.\d{4}$/ //Basic check for format validity var returnval=false if (!validformat.test(input.value)) alert("Feil datoformat. Fyll ut i rett format.") else{ //Detailed check for valid date ranges var dayfield=input.value.split(".")[0] var monthfield=input.value.split(".")[1] var yearfield=input.value.split(".")[2] var dayobj = new Date(yearfield, monthfield-1, dayfield) if ((dayobj.getDate()!=dayfield)||(dayobj.getMonth()+1!=monthfield)||(dayobj.getFullYear()!=yearfield)) alert("Feil i dag, måned eller år. Fyll ut en valid dato.") else returnval=true } if (returnval==false) input.select() return returnval Her fungerer det heller ikke å sette inn slik at datoformatet blir: dd.mm.åå, da nekter funksjon nummer to, altså validering av at det er en ekte dato å funke. Så enkelt sagt har jeg kjørt meg fast og håper på hjelp fra dere lærde. Hva må til for å få dette skriptet til å validere datoen i formatet dd.mm.åå, og at det må være en "ekte" dato i fremtiden? Takk på forhånd. Lenke til kommentar
nercix Skrevet 5. februar 2009 Del Skrevet 5. februar 2009 (endret) Du må konvertere day,month og year til int. Då blir det dateObject = new Date(parseInt(year),parseInt(month-1),parseInt(day)) Elles trur eg at det ser bra ut. Du kan sleppe split-greiene ved å bruke noe sånnt som dette: regexDate = /^(\d{2}).(\d{2}).(\d{4})$/ [day,month,year] = regexDate.exec(input.value) Du kan også legge til eit par alternative datoformat Dato fram i tid ved å opprette "tomt" date-object og sjekke om det nye er størren enn i dag: today = new Date(); if (dateObject>today) // :) Endret 5. februar 2009 av nercix Lenke til kommentar
cbastus Skrevet 5. februar 2009 Del Skrevet 5. februar 2009 Ville bare kjapt kommentere at Date() objektet i javascript tar utgangspunkt i klientens klokke. Så man kan overstyre hele valideringen ved å stille klokka på maskinen. Tenkte bare det var verdt en bemerkning. Når jeg tenker over det kan man forøvrig overstyre hele scriptet iom. at javascript kjøres på klientside. Så om det er obligatorisk at datoene er frem i tid burde du kontrollere de på serverside. Lenke til kommentar
nercix Skrevet 5. februar 2009 Del Skrevet 5. februar 2009 Ville bare kjapt kommentere at Date() objektet i javascript tar utgangspunkt i klientens klokke. Så man kan overstyre hele valideringen ved å stille klokka på maskinen.Tenkte bare det var verdt en bemerkning. Når jeg tenker over det kan man forøvrig overstyre hele scriptet iom. at javascript kjøres på klientside. Så om det er obligatorisk at datoene er frem i tid burde du kontrollere de på serverside. Data må sjølvsagt alltid bli kontrollert på serverside. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå