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

标签 javascript jquery forms

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

我已经设法让表单重定向到起始页(如果他们年龄足够大)或显示“抱歉,您的年龄还不足以进入此网站”(如果他们太年轻)。到目前为止一切顺利。

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

有没有办法定义var invalidDate =

如果他们输入字母而不是数字,则可能会出现 invalidDate 的情况,但如果“日”为 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>

如有任何建议,我们将不胜感激!

最佳答案

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

我为我正在从事的一个小项目创建了这个,也许它会对您有所帮助。

jsfiddle.net/adamjld/3gdxkL42

关于javascript - jQuery - 帮助定义年龄门中的无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30527058/

相关文章:

javascript - 尝试在 React w/Formik 中每次输入字段完成时创建一个计数器

javascript - 需要内联日期、月份和年份选择标签

javascript - 有时可以不优雅地降级吗?

javascript - 传递动态名称选择器不起作用

javascript - 使用 Javascript 连接文本框

php向表中插入空白数据

javascript - highcharts 将多个值传递给工具提示

javascript - 放大不适用于 Highmaps

javascript - Bootstrap 和 Angular JS 按钮问题

json - jQuery Ajax JSONP Post 调用 WCF 服务 moSTLY 收到 400 错误请求