Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found

Submitted

Age Calculator App using BEM methodology

@DeivissonLisboa

Desktop design screenshot for the Age calculator app coding challenge

This is a solution for...

  • HTML
  • CSS
  • JS
2junior
View challenge

Design comparison


SolutionDesign

Solution retrospective


I had some difficulties implementing error handling for incorrect input. If anyone has any suggestions or tips for improving my error handling, I would greatly appreciate it.

Community feedback

P

@rinster

Posted

Amazing job on the animation and in vanilla JS too! I did mines in Vue.js and used Moment.JS library to handle the date logic.

For handling errors, I recommend having a global object to hold your error states and update it accordingly:

const errors = {
	'errorsPresent' : 'false',
	'dayError': "",
	'monthError': "",
	'yearError': ""
}

I use an errorsPresent key so I don't have to check the entire object. A sample validation logic can look like this:


// Year
let currentYear =  new  Date().getFullYear();
if (yearInput === "") {
	errors.yearError = "This field is required";
	errors.errorsPresent = true;
} else if (isNaN(Number(yearInput))) {
	errors.yearError = "Must be a valid year";
	errors.errorsPresent = true;
} else if (Number(yearInput) > currentYear) {
	errors.yearError = "Must be in the past";
	errors.errorsPresent = true;
}

So if errors.errorsPresent === true you can update the DOM by inserting css style classes and the error messages from your errors object.

.is-danger--border {
	border: 1px solid hsl(0, 100%, 67%);
}

.is-danger--text {
	color: hsl(0, 100%, 67%);
}

Don't forget to clear your error states and messages if the user updates the date again. Hope this helps :)

Marked as helpful

1

@DeivissonLisboa

Posted

Thank you, @rinster, for your helpful feedback. With your suggestion, I was able to overcome my struggle of trying to come up with some clever way to dynamically retrieve all small tags and display the error message. I now understand that in the end, simpler is better.

0

Please log in to post a comment

Log in with GitHub
Discord logo

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord