<script language="javascript">
/*
完全动态生成年月日下拉关联菜单
作者:多菜鸟
来源:http://blog.csdn.net/kingerq/
时间: 2007-11-24
*/
var today = "";//object
var YMD = '';//given date
var sname = [["year", 2000, 2007], ["month", 1, 12], ["day", 1, 31]];//name or id
var callFun = ["resetMonth", "resetDay", ""];// onchange select call function
//add select's option
function addOption( obj, start, end, selected ) {
if( start <= end ) {
for( i = start; i <= end; i++ ) {
obj.options[i-start] = new Option( i, i );
if( selected == i ) obj.options[i-start].selected = true;
}
}
}
//return a number for day of given month
function monthDay(intYear,intMonth){
var mDate = new Date(intYear,intMonth,-1);
var mDay = mDate.getDate() + 1;
return mDay;
}
function resetDay(){
var Y = document.getElementById(sname[0][0]);
var M = document.getElementById(sname[1][0]);
var D = document.getElementById(sname[2][0]);
var num = monthDay(Y.value, M.value);
if( D.length > num ) {
for( i = D.length; i >= num; i-- ) {
D.options[i] = null;
}
}else if( D.length < num ){
addOption(D, 1, num);
}
}
function resetMonth(){
var M = document.getElementById(sname[1][0]);
M.value = 1;
resetDay();
//M.onchange();
}
//date fomart: YYYY-MM-DD
function setDefault(day){
today = new Date();//default date is today
if( day ) {
splitDay = day.split("-");
today = new Date( splitDay[0], splitDay[1]-1, splitDay[2] );
}
YMD = [today.getFullYear(), today.getMonth()+1, today.getDate()];//given date
}
//init date select
function initDate(obj){
if( YMD.length == 0 ) setDefault();
for( j = 0; j < sname.length; j++ ) {
objOut = document.createElement("select");
objOut.id = sname[j][0];
objOut.name = sname[j][0];
if( callFun[j] != "" ) eval('objOut.attachEvent("onchange", '+callFun[j]+');');
document.getElementById(obj).appendChild(objOut);
addOption(document.getElementById(sname[j][0]), sname[j][1], (j==2 ? monthDay(YMD[0], YMD[1]) : sname[j][2]) , YMD[j]);
}
}
</script>
<div id="listSelect"></div>
<script language="javascript">
//setDefault("2005-2-22");
initDate("listSelect");
</script>