This is a solution to the Age calculator app challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Users should be able to:
- View an age in years, months, and days after submitting a valid date through the form
- Receive validation errors if:
- Any field is empty when the form is submitted
- The day number is not between 1-31
- The month number is not between 1-12
- The year is in the future
- The date is invalid e.g. 31/04/1991 (there are 30 days in April)
- View the optimal layout for the interface depending on their device's screen size
- See hover and focus states for all interactive elements on the page
- Bonus: See the age numbers animate to their final number when the form is submitted
- Solution URL: Frontend Mentor
- Live Site URL: GitHub Pages
- Semantic HTML5 markup
- CSS custom properties
- CSS Grid
- Mobile-first workflow
- ES6
- Constrain Validation API
In this challenge I had the opportunity to practice in more depth CSS Grid, I could also explore the Constrain Validation API to learn more about form validation in the browser and add custom messages to input errors, and also test new CSS features like :has
.
<div class="field">
<label>Name</label>
<input type="text" name="name" id="name" required />
<small><!-- Error is showed here--></small>
</div>
.field:has(small:not(:empty)) {
label {
color: red;
}
input {
border-color: red;
}
}
const name = document.getElementById('name');
if (name.validity.valueMissing) {
name.setCustomValidity('This field is required');
} else {
name.setCustomValidity('');
}
name.nextElementSibling.textContent = name.validationMessage;
- Client-side form validation
- JavaScript
- Learn JavaScript Form Validation
- JavaScript Date Comparison
- Form Validation, Florin Pop
- LinkedIn - Raúl Barrera
- CodePen - Raúl Barrera
- Frontend Mentor - @raubaca