Ciao a tutti,
sto sperimentando uno script per ottenere una data valida tramite la selezione di 3 <select><option>, le quali comprendono mese, giorno e anno.
La pagina html che include le funzioni è la seguente:
mentre lo script .js che include è il seguente:codice:<html> <head><title></title> <script language=JavaScript1.1 type="text/javascript" src="automaticDate.js"> </script> <BODY> <FORM name="registration_form"> <h1 align=center>JavaScript date selector</h1> <table align="center"> <tr> <td> <SCRIPT>fill_select(document.registration_form);year_install(document.registration_form)</script></td> </tr></table> </FORM> </body> </html>
il codice principale è presente in questa pagina web http://javascript.internet.com/time-...-selector.htmlcodice:var date_arr = new Array; var bday_arr = new Array; date_arr[0]=new Option("1",31); date_arr[1]=new Option("2",28); date_arr[2]=new Option("3",31); date_arr[3]=new Option("4",30); date_arr[4]=new Option("5",31); date_arr[5]=new Option("6",30); date_arr[6]=new Option("7",31); date_arr[7]=new Option("8",31); date_arr[8]=new Option("9",30); date_arr[9]=new Option("10",31); date_arr[10]=new Option("11",30); date_arr[11]=new Option("12",31); function fill_select(f) { document.writeln("<SELECT name=\"bmonth\" onchange=\"update_bday(registration_form)\">"); document.writeln("<OPTION value=\"-1\">Mese :</option>"); for(x=0;x<12;x++) document.writeln("<OPTION value=\""+date_arr[x].value+"\">"+date_arr[x].text); document.writeln("</SELECT><SELECT name=\"bday\"><OPTION value=\"-1\">Giorno :</option></SELECT>"); selection=f.bmonth[f.bmonth.selectedIndex].value; } function update_bday(f) { temp=f.bday.selectedIndex; for(x=bday_arr.length;x>0;x--) { bday_arr[x]=null; f.bday.options[x]=null; } selection=parseInt(f.bmonth[f.bmonth.selectedIndex].value); ret_val = 0; if(f.bmonth[f.bmonth.selectedIndex].value == 28) { year=parseInt(f.byear.options[f.byear.selectedIndex].value); if (year % 4 != 0 || year % 100 == 0 ) ret_val=0; else if (year % 400 == 0) ret_val=1; else ret_val=1; } selection = selection + ret_val; for(x=1;x < selection+1;x++) { bday_arr[x-1]=new Option(x); f.bday.options[x-1]=bday_arr[x-1]; } if (temp == -1) f.bday.options[0].selected=true; else f.bday.options[temp].selected=true; } function year_install(f) { document.writeln("<SELECT name=\"byear\" onchange=\"update_bday(registration_form)\">"); document.writeln("<OPTION value=\"-1\">Anno :</option>"); for(x=1905;x<2012;x++) document.writeln("<OPTION value=\""+x+"\">"+x); document.writeln("</SELECT>"); update_bday(f); }
Di mio ho modificato il fatto di ottenere di default al caricamento della pagina le voci mese: giorno: anno:
Alle quali seguono poi i valori numerici di giorno, mese(prima era una stringa) e anno (dal 1905 al 2011), il tutto funziona discretamente bene.. ma..
i problemi che vorrei risolvere sono:
1) Se non si seleziona per primo il mese o l'anno, la select dei giorni non presenta nessuna opzione, rimane vuota finchè non si seleziona uno dei due.
2) Fra la select giorno: anno: viene stampato uno spazio vuoto che distanzia le due select
A parte questi due problemi il codice funziona a dovere, mi chiedo come si possano risolvere, anche perchè non ho molto tempo da impiegarci purtroppo...
grazie a tutti in anticipo!

Rispondi quotando