<html>
<head runat="server">
<title>年月日三联动</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<select name="YYYY" onchange="YYYYDD()" id="select">
<option value="" selected="selected">请选择 年</option>
</select>
<select name="MM" onchange="MMDD()">
<option value="" selected="selected">请选择 月</option>
</select>
<select name="DD">
<option value="" selected="selected">请选择 日</option>
</select>
</div>
</form>
<script language="javascript" type="text/javascript">
if (document.attachEvent) {
window.attachEvent("onload", YYYYMMDDstart);
}
else {
window.addEventListener("load", YYYYMMDDstart, false);
}
//绑定年月日
function YYYYMMDDstart() {
MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// 年份下拉框
var y = new Date().getFullYear();
for (var i = (y - 30); i < (y + 30); i++) // 今年为准,加上前后三十年
document.form1.YYYY.options.add(new Option(" " + i + "年", i));
// 月份下拉框
for (var i = 1; i < 13; i++)
document.form1.MM.options.add(new Option(" " + i + "月", i));
document.form1.YYYY.value = y;
document.form1.MM.value = new Date().getMonth() + 1;
var n = MonHead[new Date().getMonth()];
//日期下拉框
if (new Date().getMonth() == 1 && IsRunYear(YYYYvalue)) {
n++;
}
writeDay(n);
document.form1.DD.value = new Date().getDate();
}
// 年发生变化时日期发生变化(主要是判断闰平年)
function YYYYDD() {
var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
if (YYYYvalue == "") {
var eM = document.form1.MM;
optionsClear(eM);
var eD = document.form1.DD;
optionsClear(eD);
return;
}
else {
var eM = document.form1.MM;
optionsClear(eM);
// 月份下拉框
for (var i = 1; i < 13; i++)
document.form1.MM.options.add(new Option(" " + i + "月", i));
}
var n = MonHead[1];
if (IsRunYear(YYYYvalue)) {
n++;
}
writeDay(n);
}
// 月发生变化时日期联动
function MMDD() {
var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
var MMvalue = document.form1.MM.options[document.form1.MM.selectedIndex].value;
if (MMvalue == "") {
var eD = document.form1.DD;
optionsClear(eD);
return;
}
var n = MonHead[MMvalue - 1];
if (MMvalue == 2 && IsRunYear(YYYYvalue)) {
n++;
}
writeDay(n);
}
// 根据条件写日期的下拉框
function writeDay(n) {
var e = document.form1.DD;
optionsClear(e);
for (var i = 1; i < (n + 1); i++) {
e.options.add(new Option(" " + i + " 日", i));
}
}
//判断是否为闰年
function IsRunYear(year) {
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
// 清空下拉框选项
function optionsClear(e) {
e.options.length = 1;
}
</script>
</body>
</html>