Validate age from date of birthday
by next0001
HTML
<select id="birthday_year" name="birthday_year" class="birthday year" >
<option value="">Year</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
</select>
<select id="birthday_month" name="birthday_month" class="birthday month" >
<option value="">Month</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="birthday_day" name="birthday_day" class="birthday day" >
<option value="">Day</option>
</select>
<input id="btn_submit" type="submit" value="Validate my age." />
JavaScript
function isLeapYear(year) {
return (new Date(year , 2 , 0).getDate() == 29);
}
function getAge(birthDate) {
var today = new Date();
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
function getDays(year, month) {
var days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (isLeapYear(year)) {
days[2] = 29;
}
return days[month];
}
function validateDoB() {
var birthday_year = $('#birthday_year');
var birthday_month = $('#birthday_month');
var birthday_day = $('#birthday_day');
if (birthday_year.val() == '' || birthday_month.val() == '' || birthday_day.val() == '') {
alert('Input your date of birthday, plz.');
} else {
// 檢查是否滿二十歲
if (getAge(new Date(birthday_year.val(), birthday_month.val()-1, birthday_day.val())) >= 20) {
alert('Your age is older 20.');
} else {
alert('Your age is under 20.');
}
}
return false;
}
$('.birthday.year, .birthday.month').change(function(){
var year = $('#birthday_year');
var month = $('#birthday_month');
var day = $('#birthday_day');
var selected_day = day.val();
if (year.val() == '' || month.val() == '') {
return false;
}
var days = getDays(year.val(), month.val());
var options = ['<option value="">日</option>'];
for (var i = 1; i <= days; i++) {
options.push('<option value="' + i + '">' + i + '</option>');
}
day.html('').append(options.join("\n"));
day.val(Math.min(selected_day, days));
}).trigger('change');
$('#btn_submit').click(validateDoB);