Hvordan til at validere en dato ved hjælp af JavaScript

June 30

Hvordan til at validere en dato ved hjælp af JavaScript

Hvis du har en webside med en formular element i det og ønsker at validere brugeren dato input, kan du gøre det ved hjælp af JavaScript. Der er masser af tilgange til bruger input validering, herunder regulære udtryk for komplekse dataelementer. Men for at validere en dato mod din ønskede format er ikke nødvendigvis kompleks. Du bliver nødt til at beslutte, hvilken dato format du vil acceptere og fodre disse oplysninger i din JavaScript-kode. Hvis brugerne indtaster ugyldige opdaterede oplysninger, kan du bede dem om at fastsætte deres indtastede data, før du sender den.

Instruktioner


• Opret en JavaScript-funktion. I websiden med din HTML-formular på det, tilføje en JavaScript-funktion til et script sektion på din side hoved. Hvis du ikke har et script sektion allerede, tilføj en som følger mellem åbning og lukning hovedet tags: <script type = "text / javascript"> </ script> Tilføj funktionen skitse inde i denne sektion: funktion validateDate () {} Du kan ringe til den funktion, hvor du ønsker validering skal finde sted, såsom i "onclick" attribut på en knap i form: <input type = "knappen" value = "validere" onclick = "alert (validateDate ()? »gyldig«: »ugyldig«) "/> I dette tilfælde klikke på knappen vil medføre et output advarsel indeholdende" gyldigt "eller" ugyldig ", men du kan ændre dette passer til dine behov.

• Forsøg at opdele datoen i sektioner. Inde din funktion, hente det indtastede dato. Følgende kode vil arbejde for et tekstfelt indtastningen med "date_in" som sit ID-attribut:. Var dateIn = document.getElementById ("date_in") værdi; Hvad du medtage næste afhænger af, hvad format du ønsker den dato at have. Hvis du har angivet, at du vil "dd / mm / yyyy" format, for eksempel "24/11/1980" forsøg på at splitte den indgang på skråstreg: var dateSections = dateIn.split ("/"); Nu kan du tjekke, om der er tre sektioner for dag, måned og år: if (! DateSections.length = 3) return false; I dette tilfælde er koden returnerer en falsk værdi, hvis datoen ikke har tre sektioner adskilt af skråstreg, i hvilket tilfælde der ikke er behov for at holde kontrol som den dato er ugyldig.

• Kontroller, om hver sektion er den korrekte længde. Hvis scriptet fortsætter fuldbyrdende efter linjen kontrol for tre sektioner, skal den dato hidtil være gyldig. Nu kontrollere, at hvert afsnit har den rigtige længde: var dag = dateSections [0]; hvis (day.length = 2!) return false; Dette returnerer false hvis den dag sektion er ikke to tegn. Gør det samme for måned og år: var måned = dateSections [1]; hvis (month.length = 2!) return false; Var år = dateSections [2]; hvis (year.length = 4!) return false; Året sektion kontrolleres for fire tegn.

• Kontroller, om input sektioner er numeriske. Føj en kontrol for at se, om hver sektion af input dato er et tal: if (isNaN (dag)) return false; Dette vil returnere falsk hvis den dag sektion er ikke numerisk. Gør det samme igen for måned og år sektioner: if (isNaN (måned)) return false; hvis (isNaN (år)) return false; På dette tidspunkt vil funktionen kun fortsætte, hvis der er tre sektioner, hver med en række repræsenteret ved hjælp af to tegn for dag og måned, med fire tegn for året.

• Kontroller, om hver sektion er i det korrekte område. Parsing numre som heltal sikrer, at JavaScript vil behandle dem som tal: var dayNum = parseInt (dag); var monthNum = parseInt (måned); var yearNum = parseInt (år); Generelt det maksimale dag nummer vil være 31: var dayMax = 31; Dette varierer dog for visse måneder. Sæt det i måneder med 30 dage: hvis (monthNum == 4 || monthNum == 6 || monthNum == 9 || monthNum == 11) dayMax = 30; Sæt den til februar, generelle 28 dage undtagen gyldige skudår: else if (monthNum == 2) {dayMax = 28; hvis ((yearNum% 4 == 0) && (((yearNum% 100 == 0)) || (yearNum% 400 == 0))!) dayMax = 29; } Kontroller, at dagen er gyldigt: if (dayNum <1 || dayNum> dayMax) return false; Gør det samme for måneden: if (monthNum <1 || monthNum> 12) return false; For året, kan du vælge hvilken række datoer, du overveje acceptabel, hvilket vil afhænge af formålet med din form. Følgende test om datoen er mellem 1900 og 2050: if (yearNum <1900 || yearNum> 2050) return false; Ved slutningen af ​​din funktion, returnere sandt, da scriptet kun vil nå dette punkt, hvis der ikke ugyldige data er fundet: returnere sandt;