JavaScript Form Tutorial

Here's an example of a form with JavaScript validation and submission handling. This approach gives you more control over the form submission process and user experience.

Code Example

<form id="jsForm">
    <div class="form-group">
        <label for="jsName">Name*</label>
        <input type="text" id="jsName" required>
    </div>
    
    <div class="form-group">
        <label for="jsEmail">Email*</label>
        <input type="email" id="jsEmail" required>
    </div>
    
    <div class="form-group">
        <label for="jsFile">File</label>
        <input type="file" id="jsFile">
    </div>

    <button type="submit">Submit</button>
</form>

<script>
document.getElementById('jsForm').addEventListener('submit', function(e) {
    e.preventDefault();
    
    // Basic validation
    const name = document.getElementById('jsName').value;
    const email = document.getElementById('jsEmail').value;
    
    if (!name || !email) {
        alert('Please fill in all required fields');
        return;
    }

    // Create FormData object
    const formData = new FormData(this);
    
    // Example fetch request
    fetch('http://formidable.sh/f/<form id>/', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        console.log('Success:', data);
        alert('Form submitted successfully!');
    })
    .catch(error => {
        console.error('Error:', error);
        alert('An error occurred while submitting the form');
    });
});
</script>

Key Features

  • Client-side Validation: Check form inputs before submission to provide immediate feedback to users.

  • Asynchronous Submission: Use the Fetch API to submit form data without page reloads.

  • Success/Error Handling: Handle response states to show appropriate feedback to users.

Implementation Notes

In the JavaScript example above, we're using event listeners to capture the form submission, prevent the default behavior, and then handle the submission process ourselves.

To use this with your Formidable form:

  1. Replace <form id> with your actual form ID.
  2. Add validation rules specific to your form's requirements.
  3. Customize success and error handlers to match your application's design.