日期"验证"使用javascript

时间:2013-11-24 15:39:01

标签: javascript html

我希望我现在发布的内容会更有意义。所以这就是我一直试图在javascript中编写代码并且总是会出现相同的错误,现在已经尝试了一段时间来解决它但我似乎无法找到问题。

function isLeap(type)
    {
        var yr;
        try{
        yr=document.getElementById('yearof' + type).value;
            try{
            yr = parseInt(yr);
                if ((yr%4) == 0){
                    if (yr%100 == 0){
                        if (yr%400 != 0){
                            alert("Not Leap");
                            return "false";
                        }
                        if (yr%400 == 0){
                            alert("Leap");
                            return "true";
                        }
                    }
                    if (yr%100 != 0){
                        alert("Leap");
                        return "true";
                    }
                }
                if ((yr%4) != 0){
                    alert("Not Leap");
                    return "false";
                } 
            }
            catch(e){
            }
        }
        catch(e){
            break;
        }
    }

function monthDays(type){
        var month;
        var days;
        try{
        month=document.getElementById('monthof' + type).value;
            try{
            month = parseInt(month);
                if(month%2 != 0 || month == 8){
                    days= 31;
                }
                else{
                    if(month != 2){
                        days = 30;
                    }
                    else{
                        if(isLeap() == true){
                            days = 29;
                        }
                        else{
                            days = 28;
                        }
                    }
                }

                var mod=document.getElementById('dayof' + type);
                for(var i=1; i<13; i++){
                    var option=document.createElement("option");
                    option.text=i.toString();
                    try{
                        // for IE earlier than version 8
                        mob.add(option,mob.options[null]);
                    }
                    catch (e){
                        mob.add(option,null);
                    }
                }
            }
            catch(e){
            }
        }
        catch(e){ 
            break;
        }
}

这是html

<select id="monthofbirthchild" class="month" name="monthofbirthchild" onchange="monthDays("birthchild")">
                                    <option value="MM">MM</option>
                                    </select>
<select id="monthofbirth" class="month" name="monthofbirth" onchange="monthDays("birth")">
                                        <option value="MM">MM</option>
                                    </select>

我正在通过'出生'或'出生儿',以便可以编辑适合儿童或正常儿童的照片。

1 个答案:

答案 0 :(得分:1)

您可以使用Date对象获取一个月的最后日期(也就是一个月的长度):

daysInMonth = new Date(year, month, 0).getDate();
// daysInMonth = new Date(2012, 2, 0).getDate(); // --> 29

实际上2在示例中是March。但是,任何一个月都没有第0天,因此会返回上个月的最后一个日期。


修改

现在看到你的一些代码......

您在在线事件处理程序中出现引用错误。你需要这样说:

onchange="monthDays('birth');"

如果我能正确猜出HTML的其余部分,可以用下面的简单函数替换那个(糟糕的)JS代码。

function monthDays (type) {
    var month = parseInt(document.getElementById('monthof' + type).value, 10),
        days = new Date(document.getElementById('yearof' + type).value, month + 1, 0).getDate(),
        mod = document.getElementById('dayof' + type),
        i;
    mod.length = days;
    for(i = 0; i < days; i++) {
        mod[i].value = i + 1;
        mod[i].text = i + 1;
    }
}

A live demo at jsFiddle