Javascript出生日期 - 防止选择2月30日等

时间:2011-08-01 10:59:08

标签: javascript date validation

我对Javascript缺乏经验,但我正在尝试为注册过程创建这种保护,以防止用户选择不存在的日期,例如9月31日(闰年是2月29日的另一件事,我将在稍后讨论)。

目前我有这个,只涉及二月:

<select name="Day">
<option value="day">Day</option>
<script type="text/javascript">
function printDays(y) {
    var x = 1;
    while (x <= y) {
        document.write("<option value=" + x + ">" + x + "</option>");
        x++;
    }
}
window.onload=printDays(31);
</script>
</select>
<script type="text/javascript">
if (document.getElementById("month").value == feb) {
    printDays(28);
}
</script>

我确信这里有一些相当明显的错误,但我没有足够的经验来挑选它!

4 个答案:

答案 0 :(得分:1)

答案已被接受 - 虽然使用日期选择器是个好主意,但它不会阻止确定的用户(或禁用了javascript的用户)返回无效值。

部分解决方案是将输入的值转换为javascript日期然后再转换回来。 javascript日期的数据是1970年 - 但使用64位有符号值(即具有超过500,000年的范围)。请注意,在javascript月份编号为0-11。

但这不能代替服务器端验证!

答案 1 :(得分:0)

您可以随时使用JQueryUI Date Picker等插件来处理所有日期规则...

答案 2 :(得分:0)

我确实完全理解你的问题,但考虑使用http://www.nickabusey.com/jquery-date-select-boxes-plugin/来节省你的工作时间。

Demo Code

答案 3 :(得分:0)

检查年,月,日组合是否正确

function checkDate(year, month, day) {
    try {
        var d = new Date(year, month, day);
        return !isNaN(d.getDate()) && d.getDate() == day;
    } 
    catch (e) {
        return false;
    } 
}