1. 程式人生 > >實現年月日表單三級聯動

實現年月日表單三級聯動

//生成日期 function creatDate() { //生成1900年-2100年 for(var i = 2016; i >= 1950; i--) { //建立select項 var option = document.createElement('option'); option.setAttribute('value'
,i); option.innerHTML = i; sel1.appendChild(option); } //生成1月-12月 for(var i = 1; i <=12; i++){ var option1 = document.createElement('option'); option1.setAttribute('value'
,i); option1.innerHTML = i; sel2.appendChild(option1); } //生成1日—31日 for(var i = 1; i <=31; i++){ var option2 = document.createElement('option'); option2.setAttribute('value'
,i); option2.innerHTML = i; sel3.appendChild(option2); } } creatDate(); //儲存某年某月的天數 var days; //年份點選 繫結函式 sel1.onclick = function() { //月份顯示預設值 sel2.options[0].selected = true; //天數顯示預設值 sel3.options[0].selected = true; } //月份點選 繫結函式 sel2.onclick = function() { //天數顯示預設值 sel3.options[0].selected = true; //計算天數的顯示範圍 //如果是2月 if(sel2.value == 2) { //判斷閏年 if((sel1.value % 4 === 0 && sel1.value % 100 !== 0) || sel1.value % 400 === 0) { days = 29; } else { days = 28; } //判斷小月 }else if(sel2.value == 4 || sel2.value == 6 ||sel2.value == 9 ||sel2.value == 11){ days = 30; }else{ days = 31; } //增加或刪除天數 //如果是28天,則刪除29、30、31天(即使他們不存在也不報錯) if(days == 28){ sel3.remove(31); sel3.remove(30); sel3.remove(29); } //如果是29天 if(days == 29){ sel3.remove(31); sel3.remove(30); //如果第29天不存在,則新增第29天 if(!sel3.options[29]){ sel3.add(new Option('29','29'),null) } } //如果是30天 if(days == 30){ sel3.remove(31); //如果第29天不存在,則新增第29天 if(!sel3.options[29]){ sel3.add(new Option('29','29'),null) } //如果第30天不存在,則新增第30天 if(!sel3.options[30]){ sel3.add(new Option('30','30'),null) } } //如果是31天 if(days == 31){ //如果第29天不存在,則新增第29天 if(!sel3.options[29]) { sel3.add(new Option('29','29'),null) } //如果第30天不存在,則新增第30天 if(!sel3.options[30]) { sel3.add(new Option('30','30'),null) } //如果第31天不存在,則新增第31天 if(!sel3.options[31]) { sel3.add(new Option('31','31'),null) } } } //結果顯示 設定好日期時間後 彈窗通知 box.onclick = function() { //當年、月、日都已經為設定值時 if(sel1.value !='year' && sel2.value != 'month' && sel3.value !='day') { alert("日期時間已經設定好"); } }