Uno dei compiti richiesti dall'uso di JavaScript nei nostri siti è la validazione lato client dei form, validazione che, ricordiamolo, non dovrà mai e poi mai sostituire quella lato server. Vediamo come validare l'età inserita da un utente.
Possiamo utilizzare il seguente codice all'atto dell'invio del form:
'use strict';
const isValidAge = dateStr => {
if(!/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) {
return false;
}
let parts = dateStr.split('-');
let month = (parts[1][0] === '0') ? parseInt(parts[1][1], 10) : parseInt(parts[1], 10);
let year = parseInt(parts[0], 10);
let day = (parts[2][0] === '0') ? parseInt(parts[2][1], 10) : parseInt(parts[2], 10);
let requiredAge = 18;
let date = new Date();
if(year > date.getFullYear()) {
return false;
}
if(month < 1 || month > 12) {
return false;
}
if(day < 1 || day > 31) {
return false;
}
date.setFullYear(year, month - 1, day);
let currDate = new Date();
currDate.setFullYear(currDate.getFullYear() - requiredAge);
if ((currDate - date) < 0) {
return false;
}
};
La tecnica è semplice: utilizziamo la data corrente e dopo averla validata e averne estratto l'anno lo sottraiamo dall'età minima richiesta (in questo caso 18). Quindi verifichiamo che la data inserita dall'utente sia nel range stabilito.