jQuery - 帮助定义年龄门中的无效日期

时间:2015-05-29 10:18:12

标签: javascript jquery forms

我为包含酒精的客户页面设置了年龄门。访客必须填写日,月,分娩年份和国家。该表格与不同国家/地区的最低购买年龄相关联。

我已设法将表单重定向到初始页面,如果它们足够大或显示" 抱歉,您还不够大,无法进入此网站& #34;如果他们太年轻到目前为止一切都很好。

但我也需要表格来显示" 请输入有效的出生日期"如果他们放入的东西不是实际日期。

有没有办法定义 var invalidDate =

invalidDate可能是因为他们输入的是字母而不是数字,但是如果Day的无效是任何不在1-31之间的任何事情,那么对于那些不是数字1-的任何事情,也会非常感激12和年份任何不以19XX或20XX开头的东西。

很抱歉,如果我不清楚......

现在的表格(因为列表太长而删除了大多数国家/地区):

<script type="text/javascript">

var 
$ = $||jQuery;
countries = {
    "Sweden": 20,
    "Denmark": 18,
    "Other": 21,
}

$(document).ready(function() {
    $("form").submit(function(e) {
        e.preventDefault();
        var day = parseInt($("input[name=day-796]").val());
        var month = parseInt($("input[name=month-664]").val() - 1);
        var year = parseInt($("input[name=year-262]").val());
        var dateOfBirth = new Date(year, month, day, 0, 0, 0, 0);
        var ageDifMs = Date.now() - dateOfBirth.getTime();
        var ageDate = new Date(ageDifMs); 
        var age = Math.abs(ageDate.getUTCFullYear() - 1970);
        var country = $("select").val();
        var hasAccess = age >= countries[country];
        var noAccess = age <= countries[country];
        if (hasAccess) {
            window.location.href = "www.startpageURL.com";
        } else if (noAccess) {
            document.getElementById("warning_output").innerHTML = "Sorry, you're not old enough to enter this site.";
        }
    })
})
</script>

任何建议都会非常感谢!

1 个答案:

答案 0 :(得分:1)

我总是找到使用某些规则(例如18岁以上)的日期选择器的最佳方法,就是以年,月,日格式显示它。

我为我正在开展的一个小项目创建了这个项目,也许它会对你有帮助。

jsfiddle.net/adamjld/3gdxkL42