一个出生日期有年,月,日属性,默认为1980年1月1日,当用下拉列表框实现时,当改变月份或年份时,怎样也把当月的天数也显示在列表框内,比如说闰年1月有31天,当选择2月时把2月的29天数也在当前页面显示出来,我写的基本代码如下:
出生日期:<select name="year">
  <script language="javascript">
for(var i=1980;i<=2000;i++){
document.write("<option value="+i+">"+i+"</option>");
}
  </script>
  </select>年   <select name="month">
 <script language="javascript">
for(var i=1;i<=12;i++){
document.write("<option value="+i+">"+i+"</option>");
}
  </script>
  </select>月   <select name="day">
  <script language="javascript">
for(var i=1;i<=31;i++){
document.write("<option value="+i+">"+i+"</option>");
}
  </script>
  </select>日

解决方案 »

  1.   

    select加上onchange事件。
    JS 日期联动
      

  2.   

    给month加上onchage时间。获取当前月份,然后改动天数的下拉框。一般用select对象的remove方法;遇到2月份,及闰年的情况,在onchage方法中判断,然后改动天数下拉框的值为28或29天即可。几个关键点
    var day= document.getElementById("month");var opt = new Option(i, i, false, false);day.add(opt);//IE下。如果要在FF下,请使用标准DOM创建元素day.remove你可以参照下W3C的文档看下http://www.w3school.com.cn/htmldom/dom_obj_select.asp
      

  3.   

    <script type="text/javascript">
        function resetDay(month) {
            var year = document.getElementById('selYear').value, month = document.getElementById('selMonth').value
            , selDay = document.getElementById('selDay'), maxDay = 31;
            if (month == '2') {
                if (/^\d{2,}00$/.test(year.toString())) maxDay = parseInt(year) % 400 == 0 ? 29 : 28;
                else maxDay = parseInt(year) % 4 == 0 ? 29 : 28;
            }
            else maxDay = month <= 7 ? month % 2 == 0 ? 30 : 31 : month % 2 == 0 ? 31 : 30;
            selDay.options.length = 0;
            for (var i = 1; i <= maxDay; i++) selDay.options.add(new Option(i, i));
        }
    </script>出生日期:<select name="year" id="selYear" onchange="resetDay()">
                      <script language="javascript">
                          for (var i = 1980; i <= 2000; i++) {
                              document.write("<option value=" + i + ">" + i + "</option>");
                          }
                      </script>
                  </select>年              <select name="month" id="selMonth" onchange="resetDay()">
                     <script language="javascript">
                         for (var i = 1; i <= 12; i++) {
                             document.write("<option value=" + i + ">" + i + "</option>");
                         }
                      </script>
              </select>月          <select name="day" id="selDay"></select>日
      

  4.   


    <html>
    <body>
    出生日期:<select name="year" onchange="change();">
    <option>--</option>
                      <script language="javascript">
                        for(var i=1980;i<=2000;i++){
                            document.write("<option value="+i+">"+i+"</option>");
                        }
                      </script>
                  </select>年
                  <select name="month" onchange="change();">
                   <option>--</option>
                     <script language="javascript">
                        for(var i=1;i<=12;i++){
                            document.write("<option value="+i+">"+i+"</option>");
                        }
                      </script>
              </select>月
              <select name="day">
              </select>日
    <body>
    <script language="javascript">
    function change(){
    var year=document.getElementsByName("year")[0].value;
    var mounth=document.getElementsByName("month")[0].value;
    var day=document.getElementsByName("day")[0];
    var num=getDaysInMonth(year,mounth);
    if(day.options.length==num) return;
    day.options.length=0;
    for(var i=1;i<=num;i++){
    var op=document.createElement("OPTION");
    op.value=i;
    op.innerHTML=i;
    day.appendChild(op);
    }
    }
    function getDaysInMonth(year,month){
      month = parseInt(month,10)+1;
      var temp = new Date(year+"/"+month+"/0");
      return temp.getDate();
    }
    </script>
    </html>
      

  5.   

    getDaysInMonth()这个方法用的很有水平。呵呵。 看来两位有勋章的就是不一样!