thechrishaddad
thechrishaddad

Reputation: 6735

Validating Age from the Date of Birth

I am looking for a solution to validate a date of birth field which is a text box I have using jQuery Masked Input to produce the format dd/mm/yyyy, and using the dateITA:true additional methods to validate that date format.

Now what I need is a solution that validates someones age is 18 or over to complete the form, the reason I am raising this question is because most solutions I see online apparently say these validations work but will eventually be off due to leap year's etc.

I am looking for a solution that validates age down to the day, not just the year or month, basically from today to exactly 18 years ago, as this is a very important feature required for my form.

Any suggestions or articles that could be linked would be much appreciated please,

I have already seen one on here such as the following:

Calculate age in JavaScript

But according to comments they do not end up being accurate long term, how do most professional sites do this correctly?

Upvotes: 2

Views: 6317

Answers (2)

Jason H
Jason H

Reputation: 5156

I agree with the comment (but could not comment myself)

function validate(date){
    var eightYearsAgo = momment().subtract("years", 18);
    var birthday = moment(date);
    
    if(!birthday.isValid()){
        // INVALID DATE
    }else if (eightYearsAgo.isAfter(birthday)){
        // 18+
    }else{
    // < 18
    }
}

Upvotes: 4

Jonas Braga
Jonas Braga

Reputation: 595

You can use moment.js lib and calculate the difference of birth date and the currently date

const date = '16/05/2001';   // Your date
const format = 'DD/MM/YYYY'; // Your date format
const resultFormat = 'years' // Result format (years, months, days)

const age = moment().diff(moment(date, format), resultFormat, true);

if (age >= 18){
    console.log('Do what u want');
} else {
    console.log('Come back later');
}

Upvotes: 0

Related Questions