Prova queste: sono vecchie funzioni, magari da aggiustare
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Pagina senza titolo</title>
<script language="javascript" type="text/javascript">
// <!CDATA[
window.onload = window_onload;
function window_onload()
{
document.getElementById("Button1").onclick = Button1_onclick;
}
function Button1_onclick()
{
var d = document.getElementById("Text1").value;
var target = document.getElementById("div1");
var et = eta(d, (new Date()).toStringDate() );
if(isNaN(et))
{
alert(et);
}
else
{
if(et >= 18)
{
alert("Tu hai " + et + " anni; invio la richiesta...");
document.getElementById("form1").submit();
}
else
alert("Sei minorenne; non puoi entrare nel sito");
}
}
Date.prototype.toStringDate = function ()
{
return this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear()
}
/*---------------------------------------------------------------------
Questa funzione accetta una variabile stringa e verifica se e una data.
La data deve essere nel formato giorno mese anno. Il giorno e il mese
devono essere di 1 o 2 cifre, l'anno deve essere di 2 o 4 cifre.
se year4 = true, l'anno deve essere di 4 cifre,
se year4 = false o manca, l'anno può essere di 4 o 2 cifre
Il delimitatore deve essere / o - o .
Restituisce un oggetto con le proprieta:
.isdate = vero o falso
.error = messaggio errore
.year = anno
.month = mese (1 - 12)
.monthname = Gennaio - Dicembre
.dayofweek = giorno settimana Lunedì-Domenica
.day = giorno (1 - 31)
.data = oggetto data
---------------------------------------------------------------------*/
function isdate(dateStr, year4)
{
if(typeof(year4) == "undefined")
var year4 = false;
var ret = new Object();
ret.isdate = false;
ret.error = "";
ret.year = 0;
ret.month = 0;
ret.monthname = "";
ret.dayofweek = "";
ret.day = 0;
ret.data = null;
// inizio stringa
// 1 o 2 cifre
// / o - o .
// 1 o 2 cifre
// / o - o .
// 4 cifre
// fine stringa
//var datePat = /^(\d{1,2})(\/|-|.)(\d{1,2})(\/|-|.)(\d{4})$/;
var datePat = null;
if(year4)
datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{4})\s*$/;
else
datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{2}|\d{4})\s*$/;
//restituisce, allo stesso modo di una matrice, i risultati di una ricerca
//di una stringa utilizzando un oggetto Regular Expression
var matchArray = dateStr.match(datePat);
if (matchArray == null) {
ret.error = "Per favore, introduci la data nei formati gg/mm/aaaa o gg-mm-aaaa o gg.mm.aaaa";
return ret;
}
day = matchArray[1];
month = matchArray[3];
year = matchArray[5];
if(year.length == 2)
if(parseInt(year,10) < 30)
year = parseInt(year,10) + 2000;
else
year = parseInt(year,10) + 1900;
if (month < 1 || month > 12) { // il mese deve essere compreso tra 1 e 12
ret.error = "Il mese deve essere compreso tra 1 e 12.";
return ret;
}
if (day < 1 || day > 31) {//il giorno non puo essere < 1 e > 31
ret.error = "Il giorno deve essere compreso tra 1 e 31";
return ret;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
//i mesi aprile, giugno, settembre, novembre, hanno 30 giorni
ret.error = "Il mese " + month + " non ha 31 giorni!";
return ret;
}
if (month == 2) { // verifica se l'anno e bisestile: febbraio puo avere 29 giorni
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day > 29 || (day==29 && !isleap)) {
ret.error = "Febbraio " + year + " non ha " + day + " giorni!";
return ret;
}
}
isDateError = "";
// se sono qui, la data e valida!
ret.isdate = true;
ret.error = "";
ret.year = year;
ret.month = month;
ret.day = day;
ret.data = new Date(year, (month - 1), day);
switch(parseInt(month,10))
{
case 1: ret.monthname = "Gennaio"; break;
case 2: ret.monthname = "Febbraio"; break;
case 3: ret.monthname = "Marzo"; break;
case 4: ret.monthname = "Aprile"; break;
case 5: ret.monthname = "Maggio"; break;
case 6: ret.monthname = "Giugno"; break;
case 7: ret.monthname = "Luglio"; break;
case 8: ret.monthname = "Agosto"; break;
case 9: ret.monthname = "Settembre"; break;
case 10: ret.monthname = "Ottobre"; break;
case 11: ret.monthname = "Novembre"; break;
case 12: ret.monthname = "Dicembre"; break;
default: ret.monthname = ""; break;
}
//ret.dayofweek
switch( ret.data.getDay() )
{
case 0: ret.dayofweek = "Domenica"; break;
case 1: ret.dayofweek = "Lunedì"; break;
case 2: ret.dayofweek = "Martedì"; break;
case 3: ret.dayofweek = "Mercoledì"; break;
case 4: ret.dayofweek = "Giovedì"; break;
case 5: ret.dayofweek = "Venerdì"; break;
case 6: ret.dayofweek = "Sabato"; break;
default: ret.dayofweek = ""; break;
}
return ret;
}
//------------------------------------------------------------------------------
//calcola l'eta (in anni) data la data di nascita e la data di controllo
//------------------------------------------------------------------------------
function Eta(dataNascita, dataControllo)
{
var anni;
anni = dataControllo.getFullYear() - dataNascita.getFullYear();
anni -= (( dataControllo < new Date(dataControllo.getFullYear(),dataNascita.getMonth() , dataNascita.getDate() ) )?1:0 );
return anni;
}
//------------------------------------------------------------------------------
//calcola l'eta (in anni) data la stringa data di nascita e la stringa data di controllo
//------------------------------------------------------------------------------
function eta(stringaDataNascita, stringaDataControllo)
{
var dataNascita, dataControllo, Anni;
var d;
d = isdate(stringaDataNascita);
if(d.isdate)
{
dataNascita = new Date(d.year,d.month - 1,d.day);
}
else
{
return "Data di nascita non valida";
}
d = isdate(stringaDataControllo);
if(d.isdate)
{
dataControllo = new Date(d.year,d.month - 1,d.day);
}
else
{
return "Data di controllo non valida";
}
if(dataControllo < dataNascita)
{
return "La data di controllo deve essere maggiore della data di nascita";
}
return Eta(dataNascita, dataControllo);
}
// ]]>
</script>
</head>
<body>
<form id="form1" method="post" action="http://forum.html.it/forum/showthread.php?s=&threadid=1113321">
<span>Inserisci data di nascita: </span>
<input id="Text1" type="text" /><input id="Button1" type="button" value="Controlla e invia" />
</form>
<div id="div1"></div>
</body>
</html>