Everything you need as a full stack developer

Creating a basic contact form with name, email, message

- Posted in Frontend Developer by

TL;DR A basic contact form with name, email, and message fields can be created using HTML, JavaScript, and Node.js/Express.js by following a step-by-step guide that includes planning the form's functionality, creating the HTML structure, adding form validation with JavaScript, and setting up the server to handle form submissions.

Building a Basic Contact Form: A Step-by-Step Guide

As developers, we've all been there - tasked with creating a simple contact form for our clients or projects. Sounds easy enough, right? But sometimes, even the most straightforward tasks can be overwhelming when you're starting from scratch.

In this article, we'll walk through the process of building a basic contact form that captures name, email, and message details. We'll explore how to create the HTML structure, write JavaScript code to handle form validation, and integrate it with Node.js and Express.js for server-side processing.

Step 1: Planning Your Form

Before diving into code, let's define what we want our contact form to do:

  • Collect user input for name, email, and message
  • Validate the form data (e.g., check if email is in a valid format)
  • Send the form data to our server for processing

We'll assume we're using Node.js and Express.js as our backend framework.

Step 2: Creating the HTML Structure

Our contact form will consist of three input fields, each with a corresponding label. We'll use Bootstrap classes for styling.

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Contact Form</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h2>Get in Touch!</h2>
        <form id="contactForm">
            <div class="form-group">
                <label for="name">Name:</label>
                <input type="text" id="name" name="name" placeholder="Your Name">
            </div>
            <div class="form-group">
                <label for="email">Email:</label>
                <input type="email" id="email" name="email" placeholder="example@email.com">
            </div>
            <div class="form-group">
                <label for="message">Message:</label>
                <textarea id="message" name="message"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>

    <!-- Script tag to include our JavaScript code -->
    <script src="script.js"></script>
</body>
</html>

Step 3: Adding Form Validation with JavaScript

We'll use JavaScript to validate the form data before submitting it to our server. We'll check if all fields are filled in and if the email is in a valid format.

// script.js
const form = document.getElementById('contactForm');

form.addEventListener('submit', (e) => {
    e.preventDefault();

    const name = document.getElementById('name').value.trim();
    const email = document.getElementById('email').value.trim();
    const message = document.getElementById('message').value.trim();

    if (!name || !email || !message) {
        alert('Please fill in all fields!');
        return;
    }

    // Simple email validation (not recommended for production use)
    const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    if (!emailRegex.test(email)) {
        alert('Invalid email address!');
        return;
    }

    // If validation passes, submit the form data to our server
    const formData = new FormData();
    formData.append('name', name);
    formData.append('email', email);
    formData.append('message', message);

    fetch('/submit', {
        method: 'POST',
        body: formData,
    })
    .then((response) => response.json())
    .then((data) => console.log(data))
    .catch((error) => console.error(error));
});

Step 4: Setting up the Server

Let's create a simple Express.js server to handle form submissions. We'll use the multer middleware to parse multipart/form-data requests.

// app.js (Node.js/Express.js)
const express = require('express');
const multer = require('multer');

const app = express();

app.use(express.json());
app.use(multer().single('file'));

app.post('/submit', (req, res) => {
    const { name, email, message } = req.body;

    // Log the form data to the console or database
    console.log(`Received contact form submission: ${name}, ${email}, ${message}`);

    res.json({ success: true });
});

const port = 3000;
app.listen(port, () => {
    console.log(`Server listening on port ${port}`);
});

And that's it! With these steps, we've created a basic contact form with name, email, and message fields. We've also implemented JavaScript form validation and integrated our server-side processing using Node.js and Express.js.

This is just the starting point for your next project or client request. Feel free to customize and enhance this example as needed!

Key Use Case

Case Study: E-commerce Website Contact Form

A fashion e-commerce website, "StyleBoutique", wants to create a contact form on their website where customers can submit inquiries about their products, such as orders, returns, or product information.

The contact form will have the following fields:

  • Name
  • Email
  • Message

Workflow:

  1. Customer Submits Form: A customer visits StyleBoutique's website and submits the contact form with their inquiry.
  2. Client-Side Validation: The JavaScript code on the webpage validates the form data, ensuring that all fields are filled in and the email address is valid.
  3. Form Data Sent to Server: If validation passes, the form data is sent to StyleBoutique's server using a POST request.
  4. Server-Side Processing: The Node.js/Express.js server receives the form data and logs it to their database for review by their customer service team.
  5. Customer Service Response: The customer service team reviews the inquiry and responds to the customer via email.

This workflow demonstrates how a basic contact form can be implemented using client-side JavaScript validation and server-side processing with Node.js/Express.js, ensuring that customer inquiries are handled efficiently and effectively.

Finally

The key theme of this guide is creating a basic contact form with name, email, and message fields. The article walks the reader through each step of building such a form, from planning the form's functionality to setting up the server-side processing using Node.js and Express.js.

The example use case provided, an e-commerce website contact form, demonstrates how this basic form can be implemented in a real-world scenario. It shows how the form data is validated on the client side, sent to the server for processing, and then handled by the customer service team.

By following these steps and using the provided code snippets, readers can create their own basic contact forms with JavaScript form validation and Node.js/Express.js server-side processing.

Recommended Books

"Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin: This book is a must-read for developers, providing practical advice on writing clean code that is easy to understand and maintain.

"The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt and David Thomas: This classic book offers guidance on becoming a skilled programmer, covering topics such as coding habits, testing, and communication.

"JavaScript: The Definitive Guide" by David Flanagan: This comprehensive guide covers the latest JavaScript features, making it an excellent resource for developers looking to improve their skills.

Fullstackist aims to provide immersive and explanatory content for full stack developers Fullstackist aims to provide immersive and explanatory content for full stack developers
Backend Developer 103 Being a Fullstack Developer 107 CSS 109 Devops and Cloud 70 Flask 108 Frontend Developer 357 Fullstack Testing 99 HTML 171 Intermediate Developer 105 JavaScript 206 Junior Developer 124 Laravel 221 React 110 Senior Lead Developer 124 VCS Version Control Systems 99 Vue.js 108

Recent Posts

Web development learning resources and communities for beginners...

TL;DR As a beginner in web development, navigating the vast expanse of online resources can be daunting but with the right resources and communities by your side, you'll be well-equipped to tackle any challenge that comes your way. Unlocking the World of Web Development: Essential Learning Resources and Communities for Beginners As a beginner in web development, navigating the vast expanse of online resources can be daunting. With so many tutorials, courses, and communities vying for attention, it's easy to get lost in the sea of information. But fear not! In this article, we'll guide you through the most valuable learning resources and communities that will help you kickstart your web development journey.

Read more

Understanding component-based architecture for UI development...

Component-based architecture breaks down complex user interfaces into smaller, reusable components, improving modularity, reusability, maintenance, and collaboration in UI development. It allows developers to build, maintain, and update large-scale applications more efficiently by creating independent units that can be used across multiple pages or even applications.

Read more

What is a Single Page Application (SPA) vs a multi-page site?...

Single Page Applications (SPAs) load a single HTML file initially, handling navigation and interactions dynamically with JavaScript, while Multi-Page Sites (MPS) load multiple pages in sequence from the server. SPAs are often preferred for complex applications requiring dynamic updates and real-time data exchange, but MPS may be suitable for simple websites with minimal user interactions.

Read more