Effective communication drives creative collaboration, enabling teams to exchange ideas, solve problems, and achieve goals efficiently. For creative projects to thrive, teams need more than just talent—they require tools and processes that foster clear, consistent, and timely interaction.
Unified communication solutions simplify how teams connect by bringing all communication methods under one roof. This approach not only reduces inefficiencies but also creates a collaborative environment where creativity can flourish, regardless of team size or location.
Read on to discover how unified communication solutions can transform your creative workflows and help your team achieve its full potential.
Enhancing Real-time Collaboration
Real-time collaboration is essential for creative teams that need to share ideas and make adjustments without delays. Efficient communication tools can enhance how teams work together.
To improve real-time collaboration, consider the following features:
Instant messaging: Enables quick and informal communication for resolving queries or sharing updates in real-time. This ensures no time is wasted waiting for responses through slower channels like emails.
Collaborative document editing: Provides teams with the ability to work on the same document simultaneously. This feature ensures every team member’s input is reflected instantly, reducing version control issues.
Whiteboard tools: Allows visual brainstorming sessions where participants can sketch ideas or make annotations during discussions. This is particularly helpful in planning creative projects.
Task notifications and updates: Automated notifications keep everyone on the same page by sharing progress updates, task deadlines, and other important information.
These tools enhance team efficiency and ensure smooth workflows for collaborative tasks. Unified Communications as a Service platform integrates these tools, making it easier for teams to collaborate in real-time. These solutions bring remote and in-office workers together as if they’re in the same room, fostering efficiency and creativity.
Streamlining Communication Tools
Effective collaboration often depends on streamlined communication. Juggling multiple tools can create confusion and inefficiency. Unified communication solutions address this by consolidating communication channels into one platform.
The following are ways these solutions optimize workflows:
Integrated communication channels: Combining email, video calls, and team chats into a single interface ensures smoother transitions between tasks, reducing interruptions.
Customizable notifications: Tailored alert settings help users prioritize critical messages and updates without being overwhelmed by unnecessary distractions.
Centralized contact management: Keeping all team and client contact information in one place simplifies reaching out, especially during time-sensitive situations.
Consistent user experience across devices: Whether accessing through a laptop or smartphone, users enjoy uniform functionality, ensuring productivity isn’t tied to a specific device.
Collaboration analytics: Insights into team communication patterns and engagement can guide improvements, ensuring optimal performance and resource allocation.
Centralizing communication tools through unified solutions eliminates unnecessary complexity, enabling teams to focus entirely on creative problem-solving and goal achievement.
Promoting Inclusivity Across Locations
In teams with diverse locations, fostering inclusivity is critical for collaboration. Unified communications platforms ensure all team members, regardless of location, are equally engaged in discussions and decision-making.
To achieve this, consider the following tools and practices:
Real-time polling and surveys: These features allow remote and in-office team members to participate in decisions, ensuring every voice is heard and valued during brainstorming sessions or strategic meetings.
Asynchronous collaboration tools: Tools like shared task boards or recorded meetings enable team members in different time zones to stay aligned without the need for overlapping work hours.
Language translation features: Built-in translation tools help bridge language barriers, making it easier for multilingual teams to communicate effectively.
Inclusive calendar scheduling: Automated systems that suggest meeting times based on participants’ time zones prevent scheduling conflicts and respect everyone’s availability.
These features help create a cohesive team environment where collaboration feels seamless, regardless of physical or cultural differences. Inclusivity drives better communication, builds trust, and enhances team productivity.
Supporting Creative Workflows with Flexibility
Flexibility is vital for creative workflows that require teams to adapt quickly and maintain efficiency. Unified communications platforms provide tools tailored to support creativity while ensuring organization and structure.
To enhance your team’s workflows, consider the following tools and features:
Advanced file sharing: Share large files securely and efficiently within the same platform. This eliminates the need for external file-sharing tools, streamlining the exchange of resources and ensuring sensitive data stays protected.
Real-time project updates: Keep team members informed with features like shared progress boards or automated project status updates. These tools ensure everyone stays aligned without requiring constant check-ins or lengthy meetings.
Customizable collaboration spaces: Set up dedicated workspaces for specific projects or teams. These spaces allow team members to organize discussions, resources, and timelines in one central location, making it easier to manage complex tasks.
Integration with creative software: Platforms that integrate with design and productivity tools, such as Adobe Creative Cloud or project management software, allow teams to access everything they need without toggling between multiple applications.
Flexible meeting options: Schedule quick huddles, brainstorms, or longer strategy sessions, depending on project demands. Teams can choose formats that best suit their needs, whether short check-ins or more detailed planning.
These tools and features enable creative teams to work effectively, keeping workflows organized while allowing room for innovation. A flexible approach ensures projects are completed efficiently, meeting deadlines and exceeding expectations.
Final Thoughts
Unified communication solutions empower teams to collaborate with greater efficiency, creativity, and inclusivity. As work environments continue to evolve, adopting unified communication solutions ensures your team stays connected, productive, and innovative. With the right tools in place, creative collaboration becomes seamless, driving exceptional results and strengthening teamwork across all levels.
Effective communication drives creative collaboration, enabling teams to exchange ideas, solve problems, and achieve goals efficiently. For creative projects to thrive, teams need more than just talent—they require tools and processes that foster clear, consistent, and timely interaction.
Unified communication solutions simplify how teams connect by bringing all communication methods under one roof. This approach not only reduces inefficiencies but also creates a collaborative environment where creativity can flourish, regardless of team size or location.
Read on to discover how unified communication solutions can transform your creative workflows and help your team achieve its full potential.
Enhancing Real-time Collaboration
Real-time collaboration is essential for creative teams that need to share ideas and make adjustments without delays. Efficient communication tools can enhance how teams work together.
To improve real-time collaboration, consider the following features:
Instant messaging: Enables quick and informal communication for resolving queries or sharing updates in real-time. This ensures no time is wasted waiting for responses through slower channels like emails.
Collaborative document editing: Provides teams with the ability to work on the same document simultaneously. This feature ensures every team member’s input is reflected instantly, reducing version control issues.
Whiteboard tools: Allows visual brainstorming sessions where participants can sketch ideas or make annotations during discussions. This is particularly helpful in planning creative projects.
Task notifications and updates: Automated notifications keep everyone on the same page by sharing progress updates, task deadlines, and other important information.
These tools enhance team efficiency and ensure smooth workflows for collaborative tasks. Unified Communications as a Service platform integrates these tools, making it easier for teams to collaborate in real-time. These solutions bring remote and in-office workers together as if they’re in the same room, fostering efficiency and creativity.
Streamlining Communication Tools
Effective collaboration often depends on streamlined communication. Juggling multiple tools can create confusion and inefficiency. Unified communication solutions address this by consolidating communication channels into one platform.
The following are ways these solutions optimize workflows:
Integrated communication channels: Combining email, video calls, and team chats into a single interface ensures smoother transitions between tasks, reducing interruptions.
Customizable notifications: Tailored alert settings help users prioritize critical messages and updates without being overwhelmed by unnecessary distractions.
Centralized contact management: Keeping all team and client contact information in one place simplifies reaching out, especially during time-sensitive situations.
Consistent user experience across devices: Whether accessing through a laptop or smartphone, users enjoy uniform functionality, ensuring productivity isn’t tied to a specific device.
Collaboration analytics: Insights into team communication patterns and engagement can guide improvements, ensuring optimal performance and resource allocation.
Centralizing communication tools through unified solutions eliminates unnecessary complexity, enabling teams to focus entirely on creative problem-solving and goal achievement.
Promoting Inclusivity Across Locations
In teams with diverse locations, fostering inclusivity is critical for collaboration. Unified communications platforms ensure all team members, regardless of location, are equally engaged in discussions and decision-making.
To achieve this, consider the following tools and practices:
Real-time polling and surveys: These features allow remote and in-office team members to participate in decisions, ensuring every voice is heard and valued during brainstorming sessions or strategic meetings.
Asynchronous collaboration tools: Tools like shared task boards or recorded meetings enable team members in different time zones to stay aligned without the need for overlapping work hours.
Language translation features: Built-in translation tools help bridge language barriers, making it easier for multilingual teams to communicate effectively.
Inclusive calendar scheduling: Automated systems that suggest meeting times based on participants’ time zones prevent scheduling conflicts and respect everyone’s availability.
These features help create a cohesive team environment where collaboration feels seamless, regardless of physical or cultural differences. Inclusivity drives better communication, builds trust, and enhances team productivity.
Supporting Creative Workflows with Flexibility
Flexibility is vital for creative workflows that require teams to adapt quickly and maintain efficiency. Unified communications platforms provide tools tailored to support creativity while ensuring organization and structure.
To enhance your team’s workflows, consider the following tools and features:
Advanced file sharing: Share large files securely and efficiently within the same platform. This eliminates the need for external file-sharing tools, streamlining the exchange of resources and ensuring sensitive data stays protected.
Real-time project updates: Keep team members informed with features like shared progress boards or automated project status updates. These tools ensure everyone stays aligned without requiring constant check-ins or lengthy meetings.
Customizable collaboration spaces: Set up dedicated workspaces for specific projects or teams. These spaces allow team members to organize discussions, resources, and timelines in one central location, making it easier to manage complex tasks.
Integration with creative software: Platforms that integrate with design and productivity tools, such as Adobe Creative Cloud or project management software, allow teams to access everything they need without toggling between multiple applications.
Flexible meeting options: Schedule quick huddles, brainstorms, or longer strategy sessions, depending on project demands. Teams can choose formats that best suit their needs, whether short check-ins or more detailed planning.
These tools and features enable creative teams to work effectively, keeping workflows organized while allowing room for innovation. A flexible approach ensures projects are completed efficiently, meeting deadlines and exceeding expectations.
Final Thoughts
Unified communication solutions empower teams to collaborate with greater efficiency, creativity, and inclusivity. As work environments continue to evolve, adopting unified communication solutions ensures your team stays connected, productive, and innovative. With the right tools in place, creative collaboration becomes seamless, driving exceptional results and strengthening teamwork across all levels.
Marketing is continuously changing, and traditional advertising just doesn’t cut it anymore. Consumers today are savvy and selective about what catches their eye, often overwhelmed by digital noise. Successful brands now need to do more than just advertise—they must truly understand their audience, stay ahead of various market trends, leverage the right technology, and craft marketing that feels genuine and compelling.
This article explores five smart marketing ideas that can help elevate your brand.
Modernize Traditional Marketing
Traditional marketing methods still hold immense value. From direct mail to business cards and in-person promotions, they create tangible touchpoints that digital campaigns lack. They allow brands to offer personal interaction that can make a lasting impression on customers.
One of the effective traditional marketing tools is the humble flyer. Despite its simplicity, they remain a cost-effective way to reach new audiences and promote events, products, or services. Consider working with professional flyer printing services to create high-quality materials that reflect your brand’s professionalism and creativity.
Innovation happens when you blend old and new. So, include QR codes or links to digital platforms on your flyers. This way, you bridge the gap between offline and online marketing, encouraging deeper engagement. You can use this material strategically—promote exclusive discounts, highlight local events, or direct people to your website and social media. The goal is to create a seamless journey that moves potential customers from a printed page to meaningful digital engagement.
Harness SEO
Search Engine Optimization (SEO) is one of the most effective strategies for driving organic traffic to your website and increasing your brand’s visibility online. By optimizing your website and content for search engines like Google, you can ensure that your business appears prominently when users search for terms related to your products or services.
But SEO is not just about rankings—it’s about connecting with your target audience when they’re looking for what you offer. A well-executed SEO strategy can help establish your brand as an authority in your industry and build trust with potential customers.
The foundation of a strong SEO strategy starts with keyword research. So, identify the search terms your audience uses to find products or services similar to yours. Then, incorporate them seamlessly into your website’s content, including meta descriptions, headings, and image alt attributes.
Creating high-quality, value-driven content—such as blog posts, how-to guides, and FAQs—also helps attract and retain visitors while signaling to search engines that your site is a valuable resource. For example, a local bakery might optimize its website for keywords like “custom cake designs” to attract nearby customers searching for these services.
Invest in Storytelling
Storytelling is one of the oldest and most creative marketing campaigns for connecting with an audience. At its core, it’s about conveying your brand’s values, mission, or journey in a way that resonates emotionally with your audience. People don’t just buy products—they buy into the stories behind them.
The power of storytelling lies in its ability to evoke feelings and make your brand more relatable. For example, sharing the origin story of your business or the challenges you overcame to reach your goals can humanize your brand and make it more inspiring.
To incorporate storytelling into your marketing efforts, identify the key themes and values defining your brand. Use these to craft stories that align with your audience’s interests and aspirations. For example, a sustainable fashion brand could highlight how its products are made, from sourcing eco-friendly materials to empowering local artisans.
Maximize Social Media for Brand Growth
Social media channels have become a tool for modern marketing. It offers brands a platform to connect with their audience, build relationships, collect customer feedback, and share their stories in real-time. With billions of active users across platforms like Instagram, Facebook, TikTok, and LinkedIn, social media provides unparalleled opportunities to reach diverse demographics.
Social media marketing also allows for creativity and experimentation through images and videos and images, live streams, interactive polls, loyalty programs, or behind-the-scenes content. For example, a retail business might use Instagram Stories to showcase new products. Meanwhile, a service-based company could use interactive content like Q&A sessions on LinkedIn to engage with a professional audience.
The key to success lies in understanding where your audience spends their time and tailoring your content to resonate with them. Ensure consistency, too. Posting regularly, using a cohesive visual aesthetic, and maintaining a consistent brand voice can help establish trust and reliability.
Collaborate With Influencers and Micro-Influencers
Influencer marketing has become a staple market trend in the past few years for brands looking to expand their reach and build trust through viral marketing and content creation. Statistics show that 50% of millennials trust recommendations from influencers. Micro-influencers, in particular, can be highly effective because they often have a more engaged and niche audience than more prominent influencers.
You can use them to reach a new audience or run loyalty programs to improve conversion rates. This collaboration can drive significant traffic, increase brand awareness, and even boost sales. However, the success of influencer marketing lies in its authenticity. After all, influencers are seen as trusted voices within their communities.
That said, identify those who align with your brand values and target audience to get started. Reach out with collaboration opportunities, such as offering free products, affiliate partnerships, or exclusive promotions. Be sure to track the results of your campaigns, too, using metrics like engagement rates, clicks, and conversions.
Conclusion
Elevating your brand requires a strong marketing strategy and a willingness to embrace continuous changes in market trends. Start implementing these ideas today, and watch your brand reach new heights. Remember, the future of marketing belongs to those who dare to innovate.
Marketing is continuously changing, and traditional advertising just doesn’t cut it anymore. Consumers today are savvy and selective about what catches their eye, often overwhelmed by digital noise. Successful brands now need to do more than just advertise—they must truly understand their audience, stay ahead of various market trends, leverage the right technology, and craft marketing that feels genuine and compelling.
This article explores five smart marketing ideas that can help elevate your brand.
Modernize Traditional Marketing
Traditional marketing methods still hold immense value. From direct mail to business cards and in-person promotions, they create tangible touchpoints that digital campaigns lack. They allow brands to offer personal interaction that can make a lasting impression on customers.
One of the effective traditional marketing tools is the humble flyer. Despite its simplicity, they remain a cost-effective way to reach new audiences and promote events, products, or services. Consider working with professional flyer printing services to create high-quality materials that reflect your brand’s professionalism and creativity.
Innovation happens when you blend old and new. So, include QR codes or links to digital platforms on your flyers. This way, you bridge the gap between offline and online marketing, encouraging deeper engagement. You can use this material strategically—promote exclusive discounts, highlight local events, or direct people to your website and social media. The goal is to create a seamless journey that moves potential customers from a printed page to meaningful digital engagement.
Harness SEO
Search Engine Optimization (SEO) is one of the most effective strategies for driving organic traffic to your website and increasing your brand’s visibility online. By optimizing your website and content for search engines like Google, you can ensure that your business appears prominently when users search for terms related to your products or services.
But SEO is not just about rankings—it’s about connecting with your target audience when they’re looking for what you offer. A well-executed SEO strategy can help establish your brand as an authority in your industry and build trust with potential customers.
The foundation of a strong SEO strategy starts with keyword research. So, identify the search terms your audience uses to find products or services similar to yours. Then, incorporate them seamlessly into your website’s content, including meta descriptions, headings, and image alt attributes.
Creating high-quality, value-driven content—such as blog posts, how-to guides, and FAQs—also helps attract and retain visitors while signaling to search engines that your site is a valuable resource. For example, a local bakery might optimize its website for keywords like “custom cake designs” to attract nearby customers searching for these services.
Invest in Storytelling
Storytelling is one of the oldest and most creative marketing campaigns for connecting with an audience. At its core, it’s about conveying your brand’s values, mission, or journey in a way that resonates emotionally with your audience. People don’t just buy products—they buy into the stories behind them.
The power of storytelling lies in its ability to evoke feelings and make your brand more relatable. For example, sharing the origin story of your business or the challenges you overcame to reach your goals can humanize your brand and make it more inspiring.
To incorporate storytelling into your marketing efforts, identify the key themes and values defining your brand. Use these to craft stories that align with your audience’s interests and aspirations. For example, a sustainable fashion brand could highlight how its products are made, from sourcing eco-friendly materials to empowering local artisans.
Maximize Social Media for Brand Growth
Social media channels have become a tool for modern marketing. It offers brands a platform to connect with their audience, build relationships, collect customer feedback, and share their stories in real-time. With billions of active users across platforms like Instagram, Facebook, TikTok, and LinkedIn, social media provides unparalleled opportunities to reach diverse demographics.
Social media marketing also allows for creativity and experimentation through images and videos and images, live streams, interactive polls, loyalty programs, or behind-the-scenes content. For example, a retail business might use Instagram Stories to showcase new products. Meanwhile, a service-based company could use interactive content like Q&A sessions on LinkedIn to engage with a professional audience.
The key to success lies in understanding where your audience spends their time and tailoring your content to resonate with them. Ensure consistency, too. Posting regularly, using a cohesive visual aesthetic, and maintaining a consistent brand voice can help establish trust and reliability.
Collaborate With Influencers and Micro-Influencers
Influencer marketing has become a staple market trend in the past few years for brands looking to expand their reach and build trust through viral marketing and content creation. Statistics show that 50% of millennials trust recommendations from influencers. Micro-influencers, in particular, can be highly effective because they often have a more engaged and niche audience than more prominent influencers.
You can use them to reach a new audience or run loyalty programs to improve conversion rates. This collaboration can drive significant traffic, increase brand awareness, and even boost sales. However, the success of influencer marketing lies in its authenticity. After all, influencers are seen as trusted voices within their communities.
That said, identify those who align with your brand values and target audience to get started. Reach out with collaboration opportunities, such as offering free products, affiliate partnerships, or exclusive promotions. Be sure to track the results of your campaigns, too, using metrics like engagement rates, clicks, and conversions.
Conclusion
Elevating your brand requires a strong marketing strategy and a willingness to embrace continuous changes in market trends. Start implementing these ideas today, and watch your brand reach new heights. Remember, the future of marketing belongs to those who dare to innovate.
Multi-step forms are a good choice when your form is large and has many controls. No one wants to scroll through a super-long form on a mobile device. By grouping controls on a screen-by-screen basis, we can improve the experience of filling out long, complex forms.
But when was the last time you developed a multi-step form? Does that even sound fun to you? There’s so much to think about and so many moving pieces that need to be managed that I wouldn’t blame you for resorting to a form library or even some type of form widget that handles it all for you.
But doing it by hand can be a good exercise and a great way to polish the basics. I’ll show you how I built my first multi-step form, and I hope you’ll not only see how approachable it can be but maybe even spot areas to make my work even better.
We’ll walk through the structure together. We’ll build a job application, which I think many of us can relate to these recent days. I’ll scaffold the baseline HTML, CSS, and JavaScript first, and then we’ll look at considerations for accessibility and validation.
Our job application form has four sections, the last of which is a summary view, where we show the user all their answers before they submit them. To achieve this, we divide the HTML into four sections, each identified with an ID, and add navigation at the bottom of the page. I’ll give you that baseline HTML in the next section.
Navigating the user to move through sections means we’ll also include a visual indicator for what step they are at and how many steps are left. This indicator can be a simple dynamic text that updates according to the active step or a fancier progress bar type of indicator. We’ll do the former to keep things simple and focused on the multi-step nature of the form.,
The structure and basic styles
We’ll focus more on the logic, but I will provide the code snippets and a link to the complete code at the end.
Let’s start by creating a folder to hold our pages. Then, create an index.html file and paste the following into it:
Looking at the code, you can see three sections and the navigation group. The sections contain form inputs and no native form validation. This is to give us better control of displaying the error messages because native form validation is only triggered when you click the submit button.
Next, create a styles.css file and paste this into it:
Open up the HTML file in the browser, and you should get something like the two-column layout in the following screenshot, complete with the current page indicator and navigation.
Adding functionality with vanilla JavaScript
Now, create a script.js file in the same directory as the HTML and CSS files and paste the following JavaScript into it:
This script defines a method that shows and hides the section depending on the formStep values that correspond to the IDs of the form sections. It updates stepInfo with the current active section of the form. This dynamic text acts as a progress indicator to the user.
It then adds logic that waits for the page to load and click events to the navigation buttons to enable cycling through the different form sections. If you refresh your page, you will see that the multi-step form works as expected.
Multi-step form navigation
Let’s dive deeper into what the Javascript code above is doing. In the updateStepVisibility() function, we first hide all the sections to have a clean slate:
Then we grab the Next button and add a click event that conditionally increments the current step count and then calls the updateStepVisibility() function, which then updates the new section to be displayed:
Finally, we grab the Previous button and do the same thing but in reverse. Here, we are conditionally decrementing the step count and calling the updateStepVisibility():
Have you ever spent a good 10+ minutes filling out a form only to submit it and get vague errors telling you to correct this and that? I prefer it when a form tells me right away that something’s amiss so that I can correct it before I ever get to the Submit button. That’s what we’ll do in our form.
Our principle is to clearly indicate which controls have errors and give meaningful error messages. Clear errors as the user takes necessary actions. Let’s add some validation to our form. First, let’s grab the necessary input elements and add this to the existing ones:
function validateStep(step) {
let isValid = true;
if (step === 0) {
if (nameInput.value.trim() === "")
showError(nameInput, "Name is required");
isValid = false;
}
if (idNumInput.value.trim() === "") {
showError(idNumInput, "ID number is required");
isValid = false;
}
if (emailInput.value.trim() === "" || !emailInput.validity.valid) {
showError(emailInput, "A valid email is required");
isValid = false;
}
if (birthdateInput.value === "") {
showError(birthdateInput, "Date of birth is required");
isValid = false;
}
else if (step === 1) {
if (!documentInput.files[0]) {
showError(documentInput, "CV is required");
isValid = false;
}
if (departmentInput.value === "") {
showError(departmentInput, "Department selection is required");
isValid = false;
}
} else if (step === 2) {
if (!termsCheckbox.checked) {
showError(termsCheckbox, "You must accept the terms and conditions");
isValid = false;
}
}
return isValid;
}
Here, we check if each required input has some value and if the email input has a valid input. Then, we set the isValid boolean accordingly. We also call a showError() function, which we haven’t defined yet.
Paste this code above the validateStep() function:
If you refresh the form, you will see that the buttons do not take you to the next section till the inputs are considered valid:
Finally, we want to add real-time error handling so that the errors go away when the user starts inputting the correct information. Add this function below the validateStep() function:
Open real-time validation script
function setupRealtimeValidation() {
nameInput.addEventListener("input", () => {
if (nameInput.value.trim() !== "") clearError(nameInput);
});
idNumInput.addEventListener("input", () => {
if (idNumInput.value.trim() !== "") clearError(idNumInput);
});
emailInput.addEventListener("input", () => {
if (emailInput.validity.valid) clearError(emailInput);
});
birthdateInput.addEventListener("change", () => {
if (birthdateInput.value !== "") clearError(birthdateInput);
});
documentInput.addEventListener("change", () => {
if (documentInput.files[0]) clearError(documentInput);
});
departmentInput.addEventListener("change", () => {
if (departmentInput.value !== "") clearError(departmentInput);
});
termsCheckbox.addEventListener("change", () => {
if (termsCheckbox.checked) clearError(termsCheckbox);
});
}
This function clears the errors if the input is no longer invalid by listening to input and change events then calling a function to clear the errors. Paste the clearError() function below the showError() one:
And now the errors clear when the user types in the correct value:
The multi-step form now handles errors gracefully. If you do decide to keep the errors till the end of the form, then at the very least, jump the user back to the erroring form control and show some indication of how many errors they need to fix.
Handling form submission
In a multi-step form, it is valuable to show the user a summary of all their answers at the end before they submit and to offer them an option to edit their answers if necessary. The person can’t see the previous steps without navigating backward, so showing a summary at the last step gives assurance and a chance to correct any mistakes.
Let’s add a fourth section to the markup to hold this summary view and move the submit button within it. Paste this just below the third section in index.html:
This dynamically inserts the input values into the summary section of the form, truncates the file names, and offers a fallback text for the input that was not required.
Then update the updateStepVisibility() function to call the new function:
Running the form, you should see that the summary section shows all the inputted values and allows the user to edit any before submitting the information:
Our multi-step form now allows the user to edit and see all the information they provide before submitting it.
Accessibility tips
Making multi-step forms accessible starts with the basics: using semantic HTML. This is half the battle. It is closely followed by using appropriate form labels.
Other ways to make forms more accessible include giving enough room to elements that must be clicked on small screens and giving meaningful descriptions to the form navigation and progress indicators.
Offering feedback to the user is an important part of it; it’s not great to auto-dismiss user feedback after a certain amount of time but to allow the user to dismiss it themselves. Paying attention to contrast and font choice is important, too, as they both affect how readable your form is.
Let’s make the following adjustments to the markup for more technical accessibility:
Add aria-required="true" to all inputs except the skills one. This lets screen readers know the fields are required without relying on native validation.
Add role="alert" to the error spans. This helps screen readers know to give it importance when the input is in an error state.
Add role="status" aria-live="polite" to the .stepInfo. This will help screen readers understand that the step info keeps tabs on a state, and the aria-live being set to polite indicates that should the value change, it does not need to immediately announce it.
In the script file, replace the showError() and clearError() functions with the following:
And with that, the multi-step form is much more accessible.
Conclusion
There we go, a four-part multi-step form for a job application! As I said at the top of this article, there’s a lot to juggle — so much so that I wouldn’t fault you for looking for an out-of-the-box solution.
But if you have to hand-roll a multi-step form, hopefully now you see it’s not a death sentence. There’s a happy path that gets you there, complete with navigation and validation, without turning away from good, accessible practices.
And this is just how I approached it! Again, I took this on as a personal challenge to see how far I could get, and I’m pretty happy with it. But I’d love to know if you see additional opportunities to make this even more mindful of the user experience and considerate of accessibility.
References
Here are some relevant links I referred to when writing this article:
Multi-step forms are a good choice when your form is large and has many controls. No one wants to scroll through a super-long form on a mobile device. By grouping controls on a screen-by-screen basis, we can improve the experience of filling out long, complex forms.
But when was the last time you developed a multi-step form? Does that even sound fun to you? There’s so much to think about and so many moving pieces that need to be managed that I wouldn’t blame you for resorting to a form library or even some type of form widget that handles it all for you.
But doing it by hand can be a good exercise and a great way to polish the basics. I’ll show you how I built my first multi-step form, and I hope you’ll not only see how approachable it can be but maybe even spot areas to make my work even better.
We’ll walk through the structure together. We’ll build a job application, which I think many of us can relate to these recent days. I’ll scaffold the baseline HTML, CSS, and JavaScript first, and then we’ll look at considerations for accessibility and validation.
Our job application form has four sections, the last of which is a summary view, where we show the user all their answers before they submit them. To achieve this, we divide the HTML into four sections, each identified with an ID, and add navigation at the bottom of the page. I’ll give you that baseline HTML in the next section.
Navigating the user to move through sections means we’ll also include a visual indicator for what step they are at and how many steps are left. This indicator can be a simple dynamic text that updates according to the active step or a fancier progress bar type of indicator. We’ll do the former to keep things simple and focused on the multi-step nature of the form.,
The structure and basic styles
We’ll focus more on the logic, but I will provide the code snippets and a link to the complete code at the end.
Let’s start by creating a folder to hold our pages. Then, create an index.html file and paste the following into it:
Looking at the code, you can see three sections and the navigation group. The sections contain form inputs and no native form validation. This is to give us better control of displaying the error messages because native form validation is only triggered when you click the submit button.
Next, create a styles.css file and paste this into it:
Open up the HTML file in the browser, and you should get something like the two-column layout in the following screenshot, complete with the current page indicator and navigation.
Adding functionality with vanilla JavaScript
Now, create a script.js file in the same directory as the HTML and CSS files and paste the following JavaScript into it:
This script defines a method that shows and hides the section depending on the formStep values that correspond to the IDs of the form sections. It updates stepInfo with the current active section of the form. This dynamic text acts as a progress indicator to the user.
It then adds logic that waits for the page to load and click events to the navigation buttons to enable cycling through the different form sections. If you refresh your page, you will see that the multi-step form works as expected.
Multi-step form navigation
Let’s dive deeper into what the Javascript code above is doing. In the updateStepVisibility() function, we first hide all the sections to have a clean slate:
Then we grab the Next button and add a click event that conditionally increments the current step count and then calls the updateStepVisibility() function, which then updates the new section to be displayed:
Finally, we grab the Previous button and do the same thing but in reverse. Here, we are conditionally decrementing the step count and calling the updateStepVisibility():
Have you ever spent a good 10+ minutes filling out a form only to submit it and get vague errors telling you to correct this and that? I prefer it when a form tells me right away that something’s amiss so that I can correct it before I ever get to the Submit button. That’s what we’ll do in our form.
Our principle is to clearly indicate which controls have errors and give meaningful error messages. Clear errors as the user takes necessary actions. Let’s add some validation to our form. First, let’s grab the necessary input elements and add this to the existing ones:
function validateStep(step) {
let isValid = true;
if (step === 0) {
if (nameInput.value.trim() === "")
showError(nameInput, "Name is required");
isValid = false;
}
if (idNumInput.value.trim() === "") {
showError(idNumInput, "ID number is required");
isValid = false;
}
if (emailInput.value.trim() === "" || !emailInput.validity.valid) {
showError(emailInput, "A valid email is required");
isValid = false;
}
if (birthdateInput.value === "") {
showError(birthdateInput, "Date of birth is required");
isValid = false;
}
else if (step === 1) {
if (!documentInput.files[0]) {
showError(documentInput, "CV is required");
isValid = false;
}
if (departmentInput.value === "") {
showError(departmentInput, "Department selection is required");
isValid = false;
}
} else if (step === 2) {
if (!termsCheckbox.checked) {
showError(termsCheckbox, "You must accept the terms and conditions");
isValid = false;
}
}
return isValid;
}
Here, we check if each required input has some value and if the email input has a valid input. Then, we set the isValid boolean accordingly. We also call a showError() function, which we haven’t defined yet.
Paste this code above the validateStep() function:
If you refresh the form, you will see that the buttons do not take you to the next section till the inputs are considered valid:
Finally, we want to add real-time error handling so that the errors go away when the user starts inputting the correct information. Add this function below the validateStep() function:
Open real-time validation script
function setupRealtimeValidation() {
nameInput.addEventListener("input", () => {
if (nameInput.value.trim() !== "") clearError(nameInput);
});
idNumInput.addEventListener("input", () => {
if (idNumInput.value.trim() !== "") clearError(idNumInput);
});
emailInput.addEventListener("input", () => {
if (emailInput.validity.valid) clearError(emailInput);
});
birthdateInput.addEventListener("change", () => {
if (birthdateInput.value !== "") clearError(birthdateInput);
});
documentInput.addEventListener("change", () => {
if (documentInput.files[0]) clearError(documentInput);
});
departmentInput.addEventListener("change", () => {
if (departmentInput.value !== "") clearError(departmentInput);
});
termsCheckbox.addEventListener("change", () => {
if (termsCheckbox.checked) clearError(termsCheckbox);
});
}
This function clears the errors if the input is no longer invalid by listening to input and change events then calling a function to clear the errors. Paste the clearError() function below the showError() one:
And now the errors clear when the user types in the correct value:
The multi-step form now handles errors gracefully. If you do decide to keep the errors till the end of the form, then at the very least, jump the user back to the erroring form control and show some indication of how many errors they need to fix.
Handling form submission
In a multi-step form, it is valuable to show the user a summary of all their answers at the end before they submit and to offer them an option to edit their answers if necessary. The person can’t see the previous steps without navigating backward, so showing a summary at the last step gives assurance and a chance to correct any mistakes.
Let’s add a fourth section to the markup to hold this summary view and move the submit button within it. Paste this just below the third section in index.html:
This dynamically inserts the input values into the summary section of the form, truncates the file names, and offers a fallback text for the input that was not required.
Then update the updateStepVisibility() function to call the new function:
Running the form, you should see that the summary section shows all the inputted values and allows the user to edit any before submitting the information:
Our multi-step form now allows the user to edit and see all the information they provide before submitting it.
Accessibility tips
Making multi-step forms accessible starts with the basics: using semantic HTML. This is half the battle. It is closely followed by using appropriate form labels.
Other ways to make forms more accessible include giving enough room to elements that must be clicked on small screens and giving meaningful descriptions to the form navigation and progress indicators.
Offering feedback to the user is an important part of it; it’s not great to auto-dismiss user feedback after a certain amount of time but to allow the user to dismiss it themselves. Paying attention to contrast and font choice is important, too, as they both affect how readable your form is.
Let’s make the following adjustments to the markup for more technical accessibility:
Add aria-required="true" to all inputs except the skills one. This lets screen readers know the fields are required without relying on native validation.
Add role="alert" to the error spans. This helps screen readers know to give it importance when the input is in an error state.
Add role="status" aria-live="polite" to the .stepInfo. This will help screen readers understand that the step info keeps tabs on a state, and the aria-live being set to polite indicates that should the value change, it does not need to immediately announce it.
In the script file, replace the showError() and clearError() functions with the following:
And with that, the multi-step form is much more accessible.
Conclusion
There we go, a four-part multi-step form for a job application! As I said at the top of this article, there’s a lot to juggle — so much so that I wouldn’t fault you for looking for an out-of-the-box solution.
But if you have to hand-roll a multi-step form, hopefully now you see it’s not a death sentence. There’s a happy path that gets you there, complete with navigation and validation, without turning away from good, accessible practices.
And this is just how I approached it! Again, I took this on as a personal challenge to see how far I could get, and I’m pretty happy with it. But I’d love to know if you see additional opportunities to make this even more mindful of the user experience and considerate of accessibility.
References
Here are some relevant links I referred to when writing this article:
What else do we want or need CSS to do? It’s like being out late at night someplace you shouldn’t be and a stranger in a trenchcoat walks up and whispers in your ear.
“Psst. You wanna buy some async @imports? I’ve got the specificity you want.”
You know you shouldn’t entertain the idea but you do it anyway. All your friends doing Cascade Layers. What are you, a square?
I keep thinking of how amazing it is to write CSS today. There was an email exchange just this morning where I was discussing a bunch of ideas for a persistent set of controls in the UI that would have sounded bonkers even one year ago if it wasn’t for new features, like anchor positioning, scroll timelines, auto-height transitions, and popovers. We’re still in the early days of all these things — among many, many more — and have yet to see all the awesome possibilities come to fruition. Exciting times!
Chris kept a CSS wishlist, going back as far as 2013 and following up on it in 2019. We all have things we’d like to see CSS do and we always will no matter how many sparkly new features we get. Let’s revisit the ones from 2013:
✅ “I’d like to be able to select an element based on if it contains another particular selector.” Hello, :has()!
❌ “I’d like to be able to select an element based on the content it contains.”
❌ “I’d like multiple pseudo-elements.”
✅ “I’d like to be able to animate/transition something to height: auto;” Yep, we got that!
🟠 “I’d like things from Sass, like @extend, @mixin, and nesting.” We got the nesting part down with some progress on mixins.
❌ “I’d like ::nth-letter, ::nth-word, etc.”
✅ “I’d like all the major browsers to auto-update.” This one was already fulfilled.
So, about a score of 3.5 out of 7. It could very well be that some of these things fell out of favor at some point (haven’t heard any crying for a new pseudo-element since the first wishlist). Chris re-articulated the list this way:
Parent queries. As in, selecting an element any-which-way, then selecting the parent of that element. We have some proof it’s possible with :focus-within.
Container queries. Select a particular element when the element itself is under certain conditions.
But what else is on your CSS wishlist? Ironically enough, Adam Argyle went through this exercise just this morning and I love the way he’s broken things down into a user-facing wishlist and a developer-facing wishlist. I mean, geez, a CSS carousel? Yes, please! I love his list and all lists like it.
We’ll round things up and put a list together — so let us know!
What else do we want or need CSS to do? It’s like being out late at night someplace you shouldn’t be and a stranger in a trenchcoat walks up and whispers in your ear.
“Psst. You wanna buy some async @imports? I’ve got the specificity you want.”
You know you shouldn’t entertain the idea but you do it anyway. All your friends doing Cascade Layers. What are you, a square?
I keep thinking of how amazing it is to write CSS today. There was an email exchange just this morning where I was discussing a bunch of ideas for a persistent set of controls in the UI that would have sounded bonkers even one year ago if it wasn’t for new features, like anchor positioning, scroll timelines, auto-height transitions, and popovers. We’re still in the early days of all these things — among many, many more — and have yet to see all the awesome possibilities come to fruition. Exciting times!
Chris kept a CSS wishlist, going back as far as 2013 and following up on it in 2019. We all have things we’d like to see CSS do and we always will no matter how many sparkly new features we get. Let’s revisit the ones from 2013:
✅ “I’d like to be able to select an element based on if it contains another particular selector.” Hello, :has()!
❌ “I’d like to be able to select an element based on the content it contains.”
❌ “I’d like multiple pseudo-elements.”
✅ “I’d like to be able to animate/transition something to height: auto;” Yep, we got that!
🟠 “I’d like things from Sass, like @extend, @mixin, and nesting.” We got the nesting part down with some progress on mixins.
❌ “I’d like ::nth-letter, ::nth-word, etc.”
✅ “I’d like all the major browsers to auto-update.” This one was already fulfilled.
So, about a score of 3.5 out of 7. It could very well be that some of these things fell out of favor at some point (haven’t heard any crying for a new pseudo-element since the first wishlist). Chris re-articulated the list this way:
Parent queries. As in, selecting an element any-which-way, then selecting the parent of that element. We have some proof it’s possible with :focus-within.
Container queries. Select a particular element when the element itself is under certain conditions.
But what else is on your CSS wishlist? Ironically enough, Adam Argyle went through this exercise just this morning and I love the way he’s broken things down into a user-facing wishlist and a developer-facing wishlist. I mean, geez, a CSS carousel? Yes, please! I love his list and all lists like it.
We’ll round things up and put a list together — so let us know!
A boring interior can be transformed into something special with just a few moves. Framed prints can play a role in the process. In this article, we share 3 ideas on how to do it right.
Industrial interior with a classy touch
The power of minimalism and naked bricks – that’s what usually distinguishes industrial interiors. There are thousands of bars, restaurants, and offices to prove it. Many people also like to arrange their houses in this manner. No wonder, the idea is both trendy and practical. It requires some wall art, nonetheless.
Black-and-white framed prints with gallery quality will certainly fill up the blank spots. In a way, they can work as windows. Raw, desert landscape photography with massive skies and big contrast values – no better solution to bring those bricks to life. Just a handful of such custom-framed prints will be enough to add a lot of class to any industrial interior.
Family colors in the office
By visiting CANVASDISCOUNT.com, everyone can order framed photo prints from their private collections. That provides an opportunity to fill the whole office wall with family portraits. Colorful, full of smiles, and very heartwarming pictures in different sizes. That kind of decoration is suitable for business executives who like to emphasize family values and remind others what is truly important. Additionally, the arrangement of framed prints on an entire wall space improves the company image simply by humanizing it. This type of thinking in corporate interior design becomes more and more popular.
Framed prints for the bathroom
Art prints in wet rooms are nothing new. But, in most cases, they don’t cooperate together. That’s because people combine them randomly. It’s much better to give it some thought earlier. A blue, full of light bathroom will gain a lot with black-and-white framed pictures of a seascape. Contrast plays the role here, and working with it can be very beneficial.
Following that path, a rustic bathroom with wooden furniture can be visually improved by adding vivid red elements, for example. An interesting idea is to use different animal images and apply a strong red filter, which can be done with a simple photo editor. With the right frame styles, such prints will stimulate senses like a fine art gallery.
These easy-to-make interior improvements are just a fraction of possibilities available to basically everyone. In fact, all of this can be arranged via the internet. One of the moves requires visiting the webpage mentioned earlier. With such services, it seems, there’s no need for expensive decor shops anymore.
A boring interior can be transformed into something special with just a few moves. Framed prints can play a role in the process. In this article, we share 3 ideas on how to do it right.
Industrial interior with a classy touch
The power of minimalism and naked bricks – that’s what usually distinguishes industrial interiors. There are thousands of bars, restaurants, and offices to prove it. Many people also like to arrange their houses in this manner. No wonder, the idea is both trendy and practical. It requires some wall art, nonetheless.
Black-and-white framed prints with gallery quality will certainly fill up the blank spots. In a way, they can work as windows. Raw, desert landscape photography with massive skies and big contrast values – no better solution to bring those bricks to life. Just a handful of such custom-framed prints will be enough to add a lot of class to any industrial interior.
Family colors in the office
By visiting CANVASDISCOUNT.com, everyone can order framed photo prints from their private collections. That provides an opportunity to fill the whole office wall with family portraits. Colorful, full of smiles, and very heartwarming pictures in different sizes. That kind of decoration is suitable for business executives who like to emphasize family values and remind others what is truly important. Additionally, the arrangement of framed prints on an entire wall space improves the company image simply by humanizing it. This type of thinking in corporate interior design becomes more and more popular.
Framed prints for the bathroom
Art prints in wet rooms are nothing new. But, in most cases, they don’t cooperate together. That’s because people combine them randomly. It’s much better to give it some thought earlier. A blue, full of light bathroom will gain a lot with black-and-white framed pictures of a seascape. Contrast plays the role here, and working with it can be very beneficial.
Following that path, a rustic bathroom with wooden furniture can be visually improved by adding vivid red elements, for example. An interesting idea is to use different animal images and apply a strong red filter, which can be done with a simple photo editor. With the right frame styles, such prints will stimulate senses like a fine art gallery.
These easy-to-make interior improvements are just a fraction of possibilities available to basically everyone. In fact, all of this can be arranged via the internet. One of the moves requires visiting the webpage mentioned earlier. With such services, it seems, there’s no need for expensive decor shops anymore.