You are here: irt.org | FAQ | JavaScript | Date | Q938 [ previous next ]
Try:
<script language="JavaScript"><!-- function y2k(number) { return (number < 1000) ? number + 1900 : number; } function isDate(day,month,year) { var today = new Date(); var test = new Date(year,month,day); if ( (y2k(test.getYear()) == y2k(year)) && (month == test.getMonth()) && (day == test.getDate()) ) return true; else return false } function validate(what,number) { var day1 = what.day1.options[what.day1.selectedIndex].text - 0; var month1 = what.month1.selectedIndex; var year1 = what.year1.options[what.year1.selectedIndex].text - 0; var day2 = what.day2.options[what.day2.selectedIndex].text - 0; var month2 = what.month2.selectedIndex; var year2 = what.year2.options[what.year2.selectedIndex].text - 0; if (number == 1) { if (isDate(day1,month1,year1)) { var date2 = new Date(year1,month1,day1 + 17); day2 = date2.getDate(); month2 = date2.getMonth(); year2 = y2k(date2.getYear()); what.day2.options[day2-1].selected = true; what.month2.options[month2].selected = true; for (var i=0,l=what.year2.options.length;i<l;i++) { if (what.year2.options[i].text == year2) { what.year2.options[i].selected = true; } } } else alert(day1 + '/' + (month1+1) + '/' + year1 + ' is not a valid date'); } else { if (isDate(day2,month2,year2)) { var difference = (Date.UTC(year2,month2,day2,0,0,0) - Date.UTC(year1,month1,day1,0,0,0))/1000/60/60/24; if (difference > 17 || difference < 0) alert(day2 + '/' + (month2+1) + '/' + year2 + ' is more than 17 days past ' + day1 + '/' + (month1+1) + '/' + year1); } else alert(day2 + '/' + (month2+1) + '/' + year2 + ' is not a valid date'); } } //--></script> <form> <select name="day1" onChange="validate(this.form,1)"> <option>1<option>2<option>3 <option>4<option>5<option>6 <option>7<option>8<option>9 <option>10<option>11<option>12 <option>13<option>14<option>15 <option>16<option>17<option>18 <option>19<option>20<option>21 <option>22<option>23<option>24 <option>25<option>26<option>27 <option>28<option>29<option>30 <option>31 </select> <select name="month1" onChange="validate(this.form,1)"> <option>January <option>February <option>March <option>April <option>May <option>June <option>July <option>August <option>September <option>October <option>November <option>December </select> <select name="year1" onChange="validate(this.form,1)"> <option>1995<option>1996<option>1997 <option>1998<option>1999<option>2000 <option>2001<option>2002<option>2003 <option>2004<option>2005 </select> <select name="day2" onChange="validate(this.form,2)"> <option>1<option>2<option>3 <option>4<option>5<option>6 <option>7<option>8<option>9 <option>10<option>11<option>12 <option>13<option>14<option>15 <option>16<option>17<option>18 <option>19<option>20<option>21 <option>22<option>23<option>24 <option>25<option>26<option>27 <option>28<option>29<option>30 <option>31 </select> <select name="month2" onChange="validate(this.form,2)"> <option>January <option>February <option>March <option>April <option>May <option>June <option>July <option>August <option>September <option>October <option>November <option>December </select> <select name="year2" onChange="validate(this.form,2)"> <option>1995<option>1996<option>1997 <option>1998<option>1999<option>2000 <option>2001<option>2002<option>2003 <option>2004<option>2005 </select> </form>