表格天数值相对于月份的变化

时间:2011-03-08 14:49:33

标签: javascript forms

如何根据其他下拉列表中选择的月份创建显示正确天数的日期下拉菜单?

我不希望用户输入出生日期。

可以使用Javascript或Php中的任何内置函数动态完成吗?

或者我是否必须为每个月编写单独的函数?

2 个答案:

答案 0 :(得分:3)

不,没有内置的Javascript或PHP函数来动态操作HTML“每月”下拉列表。

但是,有两种语言的日期函数(PHP·Javascript)可以告诉您某个月的天数。

如果您的“月”<select />元素中的选择发生更改,我建议您使用Javascript manipulate {day} <select />元素accordingly的子项

或者省去麻烦并使用datejs库。

祝你好运!

答案 1 :(得分:0)

1到28是所有月份的共同点。 从29岁起,我们必须做出选择。

787:

addOption 29 when feb and leapyear
addOptions 29 30 when month with 30 days april,june,sep,nov
addOptions 29 30 31 when months with 31 days   jan,march,may,july,aug,oct,dec

如果第二次点击删除所有添加的选项,然后重新检查月份和年份值,以找到月份所在的类别GOTO 787

<script type="text/javascript">
        var monthselected,yearselected,mtype=0,visited=0;

        function removeOptions(){  //removes options call each time the day selector is clicked 
        var x=document.getElementById('dayselect');
        while(x.length>29)
            { x.remove(x.length-1);}
            }

        function addOptions(mtype)
        {                              //adds options acc to mtype
        //alert('initialising');
        var i;
        var x=document.getElementById("dayselect");
        for(i=29;i<=mtype;i++)
        {   var option=document.createElement("option");

        option.text=i;
        try
          {//alert('trying');
          // for IE earlier than version 8
          x.add(option,x.options[null]);
          }
        catch (e)
          {//alert('catching');
          x.add(option,null);
          }
        }
        }                           
        function isleapyear(year){ //find if year is leap or not
                if((year%4)==0)
                {
                if((year%100)!=0)
                {
                return true;
                }
                else return false;
                }
                if((year%400)==0)
                    {

                    return true;

                    }

        else return false;
        }                   




        </script>




<html><td id="bday" >Birthday</td>
<td><select  id="month" name="month" class="int" onBlur="monthselected=document.getElementById('month').value;">
                            <option value="00">Month</option>
                            <option value="01" >January</option>
                            <option value="02" >  February</option>
                            <option value="03" >  March</option>
                            <option value="04" >  April</option>
                            <option value="05" >  May</option>
                            <option value="06" >  June</option>
                            <option value="07" >  July</option>
                            <option value="08" >  August</option>
                            <option value="09" >  September</option>
                            <option value="10" >  October</option>
                            <option value="11" >  November</option>
                            <option value="12" >  December</option>
                            </select>

    <label id="year-label" class="year int">Year<select class="int" id="year" name="year" selected= onBlur="yearselected=document.getElementById('year').value;"><option value="0" >YYYY</option>
   <?php for($i=2012;$i>1912;$i--){echo "<option value=\"$i\">$i</option>";} ?>
                                                                                </select>

 <label id="day-label" class="day int">Day<select id="dayselect" class="int" name="day" onClick=
"if(monthselected==4||monthselected==6||monthselected==9||monthselected==11)
                                {mtype=30;}
                            if(monthselected==2&&isleapyear(yearselected))
                                {mtype=29;}
                            if(monthselected==2&&!isleapyear(yearselected))
                                {mtype=28;}

else if(mtype==0){mtype=31;} 

if(visited!=0){removeOptions();}
   addOptions(mtype);
   visited=1;">
 <option value="0" >  DD</option><?php for($i=1;$i<29;$i++){
                        echo "<option value=\"$i\">$i</option>";} ?>
  </select>

   </label>


   </td>

这就是我今天的工作。 在onClick事件上添加或删除了适当的节点。