Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted over 2 years ago

flexbox and grif

Arhyel Patrick•130
@ArhyelTarfa
A solution to the Multi-step form challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


It was super difficult for me, i was not able to perfect it but i learnt a lot from it.

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Gabriel Bezerra•270
    @GabrielBezerraG
    Posted over 2 years ago

    Hey Arhyel, I went through your code and I'd like to share some things that could be improved:

    • You could style the ".container" div to center the content on the screen. Apply this to the desktop layout using a media query.
    • Change the phone input type to 'tel'
    • The plan buttons should be inputs type 'radio' and have the same 'name' attribute so that only one option can be selected. You could do the same thing you did with the monthly switch where you kept the input hidden. In this case, you would have to verify which one is checked to apply the active style and use it in the finishing up step
    • I noticed there's something wrong with the 'addon' event listener. When the input is clicked, the event fires twice. The preventDefault() method seems to solve it but the input is not always selected in the event depending on where you click, which can cause an error. I'd suggest not to use event.target and choose a different approach.
    • The add-on inputs must have the same 'name' attribute
    • Instead of using .children and .childNodes you could use a querySelector in your parent element to prevent unexpected errors when you change the structure of your code
    • Instead of the 'add' array, I'd verify which add-ons are checked on the submit event. This array is never cleared and it keeps adding elements when an input is clicked
    • Consider breaking your code into smaller pieces using different CSS files and js modules to keep it more organized

    Overall, I think you did a nice job and I hope this helps you finish your project!

  • Paweł Pohl•390
    @Pawel1894
    Posted over 2 years ago

    Hey, i have some small tips for you to get closer to finishing this project.

    • I would recommend you doing very easy first step validation. in your function

    function changeStep(step)

    You can check if step is equal to 1 if yes then check if all required inputs contains value. Check each of them separately and if validation isn't fulfilled then for example change color of this input border to red and after use setTimeout function to bring it back to original color after for example 1 second.

    If you want some more detailed help feel free to contact me on my discord Paaaweł#7660

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
Frontend Mentor logo

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit all CSS, SCSS and Less files in your repository.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

How does the JavaScript validation report work?

When a solution is submitted, we use eslint to run an automated check on the JavaScript code.

The report picks out common JavaScript issues such as not using semicolons and using var instead of let or const, among others.

The report will audit all JS and JSX files in your repository. We currently do not support Typescript or other frontend frameworks.

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub