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

Javascript jQuery-帮助定义年龄门中的无效日期,javascript,jquery,forms,Javascript,Jquery,Forms,我正在为一个包含酒精的客户页面设置年龄门。访客必须填写日期、月份、生日以及国家。该表格与不同国家的最低购买年龄相关 我已经设法让表单重定向到startpage,如果他们足够大,或者如果他们太小,则显示“对不起,你还没有足够大,无法进入此网站”。到目前为止还不错 但如果他们输入的不是实际日期,我还需要表单显示“请输入有效的出生日期” 是否有办法定义var invalidDate= 如果他们输入字母而不是数字,则可以是invalidDate,但如果Day的无效值不在数字1-31之间,月份的无效值不在

我正在为一个包含酒精的客户页面设置年龄门。访客必须填写日期、月份、生日以及国家。该表格与不同国家的最低购买年龄相关

我已经设法让表单重定向到startpage,如果他们足够大,或者如果他们太小,则显示“对不起,你还没有足够大,无法进入此网站”。到目前为止还不错

但如果他们输入的不是实际日期,我还需要表单显示“请输入有效的出生日期”

是否有办法定义var invalidDate=

如果他们输入字母而不是数字,则可以是invalidDate,但如果Day的无效值不在数字1-31之间,月份的无效值不在数字1-12之间,年份的无效值不在19XX或20XX之间,则非常感谢

对不起,如果我不清楚

目前的表格(大多数国家已删除,因为列表太长):


变量
$=$| | jQuery;
国家={
“瑞典”:20,
“丹麦”:18,
“其他”:21,
}
$(文档).ready(函数(){
$(“表格”)。提交(功能(e){
e、 预防默认值();
var day=parseInt($(“输入[name=day-796]”)val());
var month=parseInt($(“输入[name=month-664]”)。val()-1);
var year=parseInt($(“输入[name=year-262]”)val();
var dateOfBirth=新日期(年、月、日、0、0、0);
var ageDifMs=Date.now()-dateOfBirth.getTime();
var ageDate=新日期(ageDifMs);
var age=Math.abs(ageDate.getUTCFullYear()-1970);
var country=$(“选择”).val();
var hasAccess=年龄>=国家[国家];

var noAccess=age我一直发现,让日期选择器具有特定规则(例如超过18条)的最佳方法是以年、月、日格式显示

我为一个小项目创建了这个,也许它会帮助你


jshiddle.net/adamjld/3gdxkL42

您可以从这里开始阅读,为什么不使用datepicker?我不能使用datepicker,因为我是按照他们的设计为客户构建的,没有datepicker,他们不希望有三个单独的日/月/年字段。另外,我对javascript非常陌生。我已经四处查看了很多,但没有发现我能理解的任何事情。请根据您的要求定义无效日期,以便我们能够提供帮助。好的,只是将其添加到问题中。无效日期可以是如果他们输入字母或数字,但如果日期不是1-31之间的数字,如果月份不是1-12之间的数字,如果年份不是从w开始,则最好定义无效日期第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>