$(function(){ //============================ //日期選擇器 start //============================ //監聽選擇 $(document).on("change", ".date-select-container .date-select", function(){ let year = $(this).parents(".date-select-container").find(".date-select-year"), month = $(this).parents(".date-select-container").find(".date-select-month"), day = $(this).parents(".date-select-container").find(".date-select-day"), full = $(this).parents(".date-select-container").find(".date-select-full") dayOptions = `` if((year.val() && month.val() && !day.val()) || (year.val() && month.val() && day.val() && !$(this).hasClass("date-select-day"))){ //有選年或月 且日為空 或是三個都有選但改變年/月時 填充/更新日的選項 //new Date(parseInt(year.val())+1911, parseInt(month.val()), 0).getDate()用來算這個月有幾天 // console.log( new Date(parseInt(year.val()), parseInt(month.val()), 0).getUTCFullYear()); for(let i=0; i< new Date(parseInt(year.val()), parseInt(month.val()), 0).getDate(); i++){ dayOptions += `` } day.html(dayOptions) full.val("") }else if((!year.val() || !month.val()) && day.val()){ //有選日 但沒有年或月 清空日的選項 day.html(dayOptions) full.val("") }else if(year.val() && month.val() && day.val()){ //年月日都有填 let dayVal = (day.val().length == 1)?'0' + day.val() : day.val() full.val(`${year.val()}-${month.val()}-${dayVal}`) } }) //============================ //日期選擇器 end //============================ });