【问题标题】:Calculating if user is over 16 years old with JavaScript使用 JavaScript 计算用户是否超过 16 岁
【发布时间】:2015-02-07 05:20:27
【问题描述】:

我正在制作一个带有日期输入和以下文本框的表单。如果用户选择的生日小于 16 岁,我希望启用文本框。

到目前为止我有:

function checkAge() {
    var birthDate = document.getElementById("DoB");
    var today = new Date();

    if (today >= new Date(birthDate.getFullYear() + 16, birthDate.getMonth(), birthDate.getDate())) {
        // Member over 16, keep parent/guardian textbox disabled.
        document.getElementById("parentConsent").disable = true;
    } else {
        // Require Parent/Guardian permission
        document.getElementById("parentConsent").disable = false;
        document.getElementById("parentConsent").setAttribute('required');
    }
}

这是我当前的 JsFiddle - http://jsfiddle.net/n3d9mLey/

【问题讨论】:

  • 我总是 return true 看起来像 16 岁以下的人不会在互联网上承认它,如果这意味着被拒绝访问一个网站。
  • 这个我怀疑他们必须诚实,因为这将是面对面的健身注册,16岁以下仍然可以注册
  • 我看到了你的 JsFiddle。请注意,桌面浏览器并未广泛支持<input type="date" />。您最好使用独立的 <select> 元素来分别表示日、月和年。
  • 明白了,这是有道理的——所以你不是在为裸体网站写年龄墙:D
  • 顺便说一句,您的 jsFiddle 不起作用,因为您已将其设置为将代码包装在 onLoad 中,请将侧边栏选项更改为“不包装”。

标签: javascript validation date


【解决方案1】:

你是直接拿dom元素来计算日期,你可以试试这样的

function checkAge() {
    var birthDate = new Date(document.getElementById("DoB").value);
    var today = new Date();

    if (today >= new Date(birthDate.getFullYear() + 16, birthDate.getMonth(), birthDate.getDate())) {
        // Member over 16, keep parent/guardian textbox disabled.
        document.getElementById("parentConsent").disable = true;
    } else {
        // Require Parent/Guardian permission
        document.getElementById("parentConsent").disable = false;
        document.getElementById("parentConsent").setAttribute('required');
    }
}

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 2010-12-21
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多