如何根据 3 个单独的输入使用 Javascript 检查用户的年龄

How to check user's age with Javascript based on 3 seperate inputs

我有 3 个独立的输入,一个用于日、月和年。只需要在页面加载时显示年份,用户只需先填写年份即可。

目前我可以通过简单地检查年份来检查某人是超过 16 岁还是未满 16 岁。

checkAge() {
    let yearOfBirth = new Date().getFullYear() - this.form.dobYear;

    if (yearOfBirth > 16) {
      this.isSixteen = false;
      this.belowSixteen = false;
    }
}

当比较当前年份减去用户输入时,如果它等于 16,那么我有两个 select 元素显示日期和月份,这两个将需要填写。

在这里我需要比较用户输入的年龄是否确实是 16 岁,如果他们距离 16 岁生日还有几个月,那么我希望他们被视为 16 岁以下,否则显示为16岁。

我正在使用 BootstrapVue,Vue.js 如果有帮助的话。

只检查年份:

function calculateYearDiff(y){ // birthday year
   return (new Date()).getUTCFullYear() - y;
}

^这将 return 现在和给定年份之间的年份差异。

要查看完整的生日日期:

function calculateAge(y,m,d){ // birthday year, month, day
   var birthday = new Date(y + '-' + m + '-' + d);
   var ageDifMs = Date.now() - birthday.getTime();
   var ageDate = new Date(ageDifMs);
   return Math.abs(ageDate.getUTCFullYear() - 1970);
}

^这将 return 从给定的生日到现在整整一年。

获取当前Date

var base=new Date();

减少16年

base.setFullYear(base.getFullYear()-16);

根据用户输入制作一个 Date 对象

var birthday=new Date(y,m,d);

比较两者

if(birthday.getTime()<=base.getTime())
  // ok
else
  // not ok

function check(event){
  var base=new Date();
  res.innerText="It is "+base;
  base.setFullYear(base.getFullYear()-16);
  res.innerText+="\n16 years ago it was "+base;
  var bday=event.target.valueAsDate;
  if(bday)
    res.innerText+="\nVerdict: "+(bday.getTime()<base.getTime()?"Okay":"Too young");
}
Birthday: <input type="date" oninput="check(event)" value="0"><br>
<div id="res"></div>