Kontrola správnosti zadania dátumu vo formulári

Pri personalizácii a preberaní údajov z formulárov je niekedy viac, inokedy menej dôležité presné vyplnenie jednotlivých osobných, ale aj iných údajov, ktoré je v mnohých prípadoch dosť problematické. Dnes si ukážeme ako overiť pomocou jednoduchého scriptu formát dátumu vo formulári.

Kontrola správnosti zadávnia udájov vo formulároch je dôležitou súčasťou spätnej kontroly pri odosielaní údajov klientov serveru a jej spätné vyhodnocovanie dokáže ušetriť veľa práce. Najjednoduchším riešení je ošetrenie týchto údajov priamo u klienta jenoduchým JavaScriptom. Ako teda na to?

Vytvoríme si funkciu isValidDate(dateStr) a postupne budeme testovať správnosť formátu a jednotlivých polí dátumu. Čiže správnosť počtu mesiacov, dní, formát roku, počet dní v jednotlivých mesiacoch a pod.

<SCRIPT LANGUAGE="JavaScript">

<!-- Zaciatok
function isValidDate(dateStr) {
// Vyberte si z nasledujúcich formátov dátumu:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Taktiež treba správne oddeliť od seba dni, mesiace a roky

var datePat = /^(d{1,2})(/|-)(d{1,2})2(d{2}|d{4})$/;

// Ak použijeme štvormiestne číselný rok je potrebné nasledovné zadefinovanie:
// var datePat = /^(d{1,2})(/|-)(d{1,2})2(d{4})$/;

var matchArray = dateStr.match(datePat); //formát je v poriadku?
if (matchArray == null) {
alert("Dátum nemá správny formát :)")
return false;
}
month = matchArray[1]; // doplň dátum do premenných
day = matchArray[3];
year = matchArray[4];
if (month < 1 || month > 12) { // obmedzenie mesiacov
alert("Mesiac musí byť zadaný od 1 až 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Dni musia byť v rozmedzí od 1 po 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Mesiac "+month+" nemá 31 dní!")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("Februar " + year + " namá " + day + " dní!");
return false;
   }
}
return true;  
}
// Koniec --> </script>

A samotné volanie scriptu na stránke bude vypadať nasledovne:

<form onSubmit="return isValidDate(this.date.value);">
Aký je dátum Vášho narodenia_?  <input type=text name=date size=10
maxlength=10> (vo formáte MM/DD/YYYY)  
<input type=submit value="Odošli dátum">
</form>


Developer,
Stiahnuté z Developer.sk