根据所选月份获取天数

时间:2014-04-09 02:08:23

标签: javascript jquery date

我有一个带有3个下拉框的基本表单

<form>
<select name="year" id="y">
<option value="2014">2014</option>
...
<option value="1949">1949</option>
</select>
<select name="month" id="m">
<option value="01">JAN</option>
...
<option value="12">DIC</option>
</select>
<select name="day" id="d">
<option value="1">1</option>
...
<option value="31">31</option>
</select>
<input type="text" name="age">
</form>

所以这个想法是: 获取几个月,以便可以填充天数的选择选项,1,2,3,4,5 ...等等......然后,一旦我有年,月和日,我需要进行计算所以我可以得到年龄,计算的价值/结果将转到年龄的输入框... 现在,这些年必须不少于1年,不超过69或70年,我已经做了......:

function getYears()
    {
        d = new Date();
        curr_year = d.getFullYear();

        for(i = 0; i < 70; i++)
        {
            document.getElementById('y').options[i] = new Option(curr_year-i,curr_year-i);
        }
    }

使用该代码,我可以填充年份的选项......并且使用下一个代码,我可以获得所选择的每月的天数,但是无法正常工作......

它不起作用,因为如果我选择1月它会在<select>天显示31天,但是如果我再换一个月它会继续显示第一次选择的月数......

function obtenDias(v) {
    var select = document.getElementById("d");
    switch(v)
    {
        case "01":  ed = 31;break;
        case "02":  ed = 29;break;
        case "03":  ed = 31;break;
        case "04":  ed = 31;break;
        case "05":  ed = 31;break;
        case "06":  ed = 31;break;
        case "07":  ed = 31;break;
        case "08":  ed = 31;break;
        case "09":  ed = 31;break;
        case "10":  ed = 31;break;
        case "11":  ed = 31;break;
        case "12":  ed = 31;break;
    }
    for(i=1;i<=ed;i++)
    {
        select.options[i] = new Option(i, i, true, false);
    }
}

关于根据选择得到年龄基础的计算......好吧,我不知道......我可以得到当前日期减去选定的年份...类似的东西..它不需要100%准确......

1 个答案:

答案 0 :(得分:1)

那是因为你没有清除旧选项。

因此,对于Jan选择,您创建了31个选项。但是对于2月选择,您正在更新29个仍然保留第30和第31选项的选项。因此,删除额外选项或在重新填充之前删除所有选项。

在重新填充选项列表数天之前尝试此操作:

while(select.options.length > 0){
    selection.options.remove(0);
}
相关问题