1. 程式人生 > >javascript年月日三級聯動下拉框

javascript年月日三級聯動下拉框

/* 在你的頁面需要這三條html程式碼 <select id="y" onchange="funy(this)"></select> <select id="m" onchange="funm(this)"></select> <select id="d"></select> */ var y = document.getElementById('y'); var m = document.getElementById('m'
); var d = document.getElementById('d'); var D = new Date(); var yy = D.getFullYear(); //年 var mm = parseInt(D.getMonth()) + 1; //現在是8月,月份獲取是7月。一臉懵逼! var dd = D.getDate(); //日 var oyy = 10 * (yy - 100).toString().substr(0,3); //計算最小年 o = old
var marr = [1,3,5,7,8,10,12]; //列出31天的月份 var add; //初始化每月天數 a = all starty(); //開始生成年下拉列表 startm(); //開始生成月下拉列表 startd(dd,mm,yy); //開始生成日下拉列表 // 生成年下拉列表 function starty(){ // 初始化 var
pyy = document.createElement('option'); pyy.innerText = '選擇 年'; pyy.value = 0; y.appendChild(pyy); // 迴圈出所有年 for(i=yy;i>=oyy;i--){ pyy = document.createElement('option'); pyy.innerText = i + ' 年'; pyy.value = i; y.appendChild(pyy); } } // 生成月下拉列表 function startm(){ // 初始化 var pmm = document.createElement('option'); pmm.innerText = '選擇 月'; pmm.value = 0; m.appendChild(pmm); // 判斷是否選擇了年 if(y.selectedOptions[0].value == 0) return; // 迴圈出所有月 for(i=1;i<=12;i++){ pmm = document.createElement('option'); pmm.innerText = i + ' 月'; pmm.value = i; m.appendChild(pmm); } } function startd(mm,yy){ // 初始化 var pdd = document.createElement('option'); pdd.innerText = '選擇 日'; pdd.value = 0; d.appendChild(pdd); // 判斷是否選擇了月 if(m.selectedOptions[0].value == 0) return; var day = isadd(mm,yy); // 迴圈出所有日 for(i=1;i<=day;i++){ pdd = document.createElement('option'); pdd.innerText = i + ' 日'; pdd.value = i; d.appendChild(pdd); } } // 判斷併產生該月的天數 function isadd(mm,yy){ if(marr.indexOf(parseInt(mm)) != -1){ add = 31; } else{ add = 30; if(mm == 2 && yy % 4 == 0){ add = 29; } else if(mm == 2 && yy % 4 != 0){ add = 28; } } return add; } // 年份改變時呼叫 function funy(obj){ m.innerHTML = null; d.innerHTML = null; var yy = obj.selectedOptions[0].value; startm(); startd(dd,mm,yy); } // 月份改變時呼叫 function funm(obj){ d.innerHTML = null; var yy = y.selectedOptions[0].value; var mm = obj.selectedOptions[0].value; startd(mm,yy); }