联动的日期下拉列表,兼容IE,FF

本文介绍了一个简单的JavaScript日期选择器实现方法,通过动态更新年、月、日的选择器选项来确保用户输入的有效性。该选择器能根据所选年份是否为闰年来调整2月的天数,并实时更新日期选择器的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 测试浏览器:IE7,FF3

JS代码

  1. var dangQian = 31;
  2.             function setDay(){
  3.                 var year = parseInt(document.getElementById('year').value); //当前年
  4.                 var month = parseInt(document.getElementById('month').value); //当前月
  5.                 var oDay = document.getElementById('day');
  6.                 var days = [31,28,31,30,31,30,31,31,30,31,30,31]; //一年中各月天数
  7.                 if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){ //闰年
  8.                     days[1] = 29; //闰年2月29天
  9.                 }
  10.                 var day = days[month - 1]; //本月天数
  11.                 while(dangQian > day){ //大于本月天数隐藏
  12.                     oDay.removeChild(document.getElementById('day' + dangQian));
  13.                     dangQian--;
  14.                 }
  15.                 while(day > dangQian){ //小于等于本月天数显示
  16.                     dangQian++;
  17.                     var option = new Option(dangQian,dangQian); //注意select动态添加option的方法
  18.                     option.id = 'day' + dangQian;
  19.                     oDay.options[oDay.options.length] = option; //注意select动态添加option的方法
  20.                 }
  21.             }
  22.             
  23.             function addOnload(fn){
  24.                 if(typeof(fn) != 'function'return false;
  25.                 var _onload = (window.onload && typeof(window.onload) == 'function') ? window.onload : null;
  26.                 window.onload = function(){if(_onload)_onload();fn();};
  27.             }
  28.             addOnload(setDay);

jsp代码片段:

  1. <select name="year" id="year" onchange="setDay()">
  2.                                 <%for(int i = 0,len = 10; i < len; i++){%>
  3.                                     <option value="<%=y-i %>" <%if(y-i == year){out.print("selected");} %>><%=y-i %></option>
  4.                                 <%}%>
  5.                                 </select>
  6.                                 <select name="month" id="month" onchange="setDay()">
  7.                                 <%for(int i = 0,len = 12; i < len; i++){%>
  8.                                     <option value="<%=(i+1)<10?"0"+(i+1):(i+1) %>" <%if(i+1 == month){out.print("selected");} %>><%=i+1 %></option>
  9.                                 <%}%>
  10.                                 </select>
  11.                                 <select name="day" id="day">
  12.                                 <%for(int i = 0,len = 31; i < len; i++){%>
  13.                                     <option id="day<%=(i+1) %>" value="<%=(i+1)<10?"0"+(i+1):(i+1) %>" <%if(i+1 == day){out.print("selected");} %>><%=i+1 %></option>
  14.                                 <%}%>
  15.                                 </select>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值