Gå til innhold

[Løst]Dato validering av form,


Anbefalte innlegg

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
Videoannonse
Annonse

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 av nercix
Lenke til kommentar

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
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...