Prova questo....
codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled</title> <script language="JavaScript" type="text/javascript"> <!-- //---------------------------------------------------- // variabili globali //---------------------------------------------------- var globalYear = 0; var globalmonth = 0; var globalDay = 0; var mese = new Array('Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'); //---------------------------------------------------- // Gestione degli anni //---------------------------------------------------- function years(aYear) { if (aYear == null) { var today = new Date(); currentYear = today.getFullYear(); //------------ Assegnazione alla variabile globale globalYear = currentYear; } else { currentYear = aYear; //------------ Assegnazione alla variabile globale globalYear = aYear; //------------ Inizializzazione mesi months(1); return; } // if (aYear == null) //---------- Fino a 50 anni prima dell'anno in corso startYear = currentYear - 50; //---------- Fino a 5 anni dopo dell'anno in corso endYear = currentYear + 5; //---------- Riempimento del combo box "anno" for (i=startYear;i<=endYear;i++) { //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo document.getElementById('anno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = i; newOption.value = i; //----------- Se l'anno in corso = a quello corrente if (i == currentYear) { newOption.selected = true; } // if (i == currentYear) } // for (i=startYear;i<=endYear;i++) if (aYear != null) { //------------ Inizializzazione mesi months(1); return; } // if (aYear != null) } // function years(aYear) //---------------------------------------------------- // Gestione dei mesi //---------------------------------------------------- function months(aMonth) { if (aMonth == null) { //------------ Mese in corso var today = new Date(); //------------ Ricavare il mese in corso + 1 perché Gennaio = 0 currentMonth = today.getMonth() + 1; //------------ Assegnazione alla variabile globale globalMonth = currentMonth; } else { currentMonth = aMonth; //------------ Assegnazione alla variabile globale globalMonth = aMonth; } // if (aMonth == null) //------------ Cancellazione dei dati già presenti document.getElementById('mese').innerHTML = ''; //------------ In ogni anno ci sono sempre 12 mesi for (i=1;i<=12;i++) { //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo document.getElementById('mese').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = mese[i-1]; newOption.value = i; //----------- Se il mese in corso = a quello corrente if (i == currentMonth) { newOption.selected = true; } // if (i == currentMonth) } // for (i=1;i<=12;i++) if (aMonth != null) { //------------ Inizializzazione giorni days(1); } // if (aMonth != null) } // function months() //---------------------------------------------------- // Gestione dei giorni //---------------------------------------------------- function days(aDay) { //------------ Giorno in corso if (aDay == null) { var today = new Date(); //------------ Ricavare il mese in corso + 1 perché Gennaio = 0 currentDay = today.getDate(); } else { currentDay = aDay; } // if (aDay == null) //------------ Cancellazione dei dati già presenti document.getElementById('giorno').innerHTML = ''; //------------ In ogni mese ci sono almeno 28 giorni for (i=1;i<=28;i++) { //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo document.getElementById('giorno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = i; newOption.value = i; //----------- Se il mese in corso = a quello corrente if (i == currentDay) { newOption.selected = true; } // if (i == currentDay) } // for (i=1;i<=28;i++) //------------ Il mese di febbraio puo' avere 29 giorni if (globalMonth == 2) { //------------ Se è un anno bissestile - ATTENTO ci sono altri requisiti !!!! if ((globalYear/4) == parseInt(globalYear/4)) { //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo document.getElementById('giorno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = 29; newOption.value = 29; //----------- Se il mese in corso = a quello corrente if (currentDay == 29) { newOption.selected = true; } // if (currentDay == 29) } // if ((globalYear/4) == parseInt(globalYear/4)) } else { //----------- Tutti i mesi hanno almeno 30 giorni //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo per il giorno 29 document.getElementById('giorno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = 29; newOption.value = 29; //----------- Se il mese in corso = a quello corrente if (currentDay == 29) { newOption.selected = true; } // if (currentDay == 29) //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo il giorno 30 document.getElementById('giorno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = 30; newOption.value = 30; //----------- Se il mese in corso = a quello corrente if (currentDay == 30) { newOption.selected = true; } // if (currentDay == 30) //----------- Alcuni mesi hanno 31 giorni if (globalMonth != 4 && globalMonth != 6 && globalMonth != 9 && globalMonth != 11) { //----------- creazione di una nuova option var newOption = document.createElement('OPTION'); //----------- Assegnazione della nuova opzione al combo il giorno 31 document.getElementById('giorno').add(newOption); //----------- Assegnazione del valore e del testo newOption.text = 31; newOption.value = 31; //----------- Se il mese in corso = a quello corrente if (currentDay == 31) { newOption.selected = true; } // if (currentDay == 30) } // if (globalMonth != 4 && globalMonth != 6 && globalMonth != 9 && globalMonth != 11) } // if (globalMonth == 2) //------------ Assegnazione alla variabile globale globalDay = currentDay; } // function days() //--> </script> </head> <body> Giorno <select id="giorno" ></select> Mese <select id="mese" onchange="months(this.value);"></select> Anno <select id="anno" onchange="years(this.value);"></select> <script language="JavaScript" type="text/javascript"> <!-- years(); months(); days(); //--> </script> </body> </html>

Rispondi quotando