Aller au contenu

Soumission de formulaires JavaScript : méthode submit() et événements

Dans le monde du développement web, comprendre comment gérer la soumission des formulaires en JavaScript est essentiel. Les formulaires constituent la colonne vertébrale de l'interaction utilisateur sur de nombreux sites web, offrant un moyen pour les utilisateurs de renvoyer des informations aux serveurs. Cet article explore en profondeur les mécanismes JavaScript derrière la soumission de formulaires, en se concentrant spécifiquement sur l'événement submit et la méthode .submit(). Nous enrichirons notre discussion avec des exemples de code pratiques, garantissant que même les débutants puissent saisir les concepts et les mettre en œuvre efficacement.

Comprendre l'événement submit

L'événement submit en JavaScript est déclenché lorsqu'un formulaire est sur le point d'envoyer ses données au serveur. Cet événement est crucial pour effectuer des vérifications avant la soumission, telles que les validations de formulaire et les confirmations utilisateur, ce qui peut améliorer l'intégrité des données et l'expérience utilisateur.

Exemple : Validation du formulaire avant la soumission

Ce script empêche la soumission du formulaire si les champs ne sont pas remplis correctement, en fournissant un message d'erreur à l'utilisateur.


html
<div>
  <form style="display: flex; justify-content: center; gap: 2px; align-items: center; flex-direction: column;" id="registrationForm">
    Username: <input type="text" name="username" required />
    Email: <input type="email" name="email" required />
    <button type="submit">Register</button>
  </form>
  <div id="message" style="margin-top: 10px; text-align:center;"></div> <!-- Message container for feedback -->
  <script>
    const form = document.getElementById('registrationForm');
    form.addEventListener('submit', function(event) {
      event.preventDefault(); // Prevent actual form submission to a server
      const messageDiv = document.getElementById('message');
      if (!this.checkValidity()) {
        messageDiv.textContent = 'Please fill all required fields correctly.';
        messageDiv.style.color = 'red'; // Display the message in red for errors
      } else {
        messageDiv.textContent = 'The form was successfully submitted.';
        messageDiv.style.color = 'green'; // Display the message in green for success
        form.reset(); // Reset the form fields after successful submission
      }
    });
  </script>
</div>

Fonctionnalité JavaScript :

  • Écouteur d'événement : Un écouteur d'événement est attaché au formulaire et se déclenche lorsque la soumission du formulaire est tentée.
  • Vérification de validation : La fonction checkValidity() est utilisée ici. Il s'agit d'une méthode intégrée aux formulaires HTML qui vérifie toutes les entrées du formulaire par rapport à leurs règles de validation (comme l'attribut required dans ce cas). Si un champ ne respecte pas sa règle de validation, la fonction retourne false.
  • Prévention de la soumission : Si checkValidity() retourne false (ce qui signifie que le formulaire contient des champs obligatoires invalides ou vides), le script empêche la soumission du formulaire au serveur. À la place, un message est affiché demandant à l'utilisateur de remplir correctement tous les champs obligatoires.
  • Gestion de la soumission : Si tous les champs sont valides, le formulaire affichera un message indiquant une soumission réussie au lieu d'afficher une page vide ou de soumettre les données au serveur.

Exploiter la méthode .submit()

Contrairement à l'événement submit, la méthode .submit() vous permet d'initier la soumission du formulaire de manière programmatique. Cette méthode est particulièrement utile dans les scénarios où les données du formulaire doivent être soumises sans interaction directe de l'utilisateur, par exemple après avoir réussi une série de tests ou de conditions automatisés.

Exemple : Soumission programmatique du formulaire

Pour simuler la soumission d'un formulaire sans envoyer de données à un serveur (dans le cadre de notre exemple), vous pouvez modifier votre HTML pour gérer la soumission à l'aide de JavaScript qui empêche la soumission réelle. Cela permettra de démontrer la fonctionnalité sans naviguer vers une autre page ou afficher une erreur 404. Voici comment procéder :


html
<!DOCTYPE html>
<html>
<head>
  <title>Auto Submit Form Demo</title>
</head>
<body>
  <form id="autoSubmitForm">
    <input type="hidden" name="data" value="Automatic Submission" />
  </form>
  <script>
    function submitFormAutomatically() {
      document.getElementById('autoSubmitForm').submit();
      alert("Form submitted with data: " + document.getElementById('autoSubmitForm').data.value);
    }
    document.addEventListener('DOMContentLoaded', submitFormAutomatically); // Call the function when the DOM is ready
  </script>
</body>
</html>

Dans cet exemple, le formulaire est conçu pour ne rien envoyer nulle part lors de sa soumission. Cela est réalisé en omettant l'attribut action, qui par défaut soumettrait au serveur de la page actuelle. De plus, lorsque vous essayez de soumettre le formulaire, une alerte s'affichera. Cette alerte a simplement pour but de vous montrer ce qui se passerait si le formulaire était soumis, comme une simulation. Elle inclut la valeur d'un champ masqué du formulaire, afin que vous puissiez voir une partie des données qui auraient été envoyées. Cette configuration vous aide à comprendre le comportement du formulaire sans avoir besoin de vous connecter à un serveur ou de provoquer d'erreurs.

Note importante : Appeler form.submit() de manière programmatique ne déclenche pas l'événement submit. Si vous devez exécuter des validations ou d'autres écouteurs d'événements submit, vous devez déclencher l'événement manuellement : form.dispatchEvent(new Event('submit')). Pour les navigateurs modernes, il est recommandé d'utiliser plutôt form.requestSubmit(). Il déclenche automatiquement la validation et l'événement submit, ce qui en fait une alternative plus sûre à form.submit().

Combiner .submit() avec des écouteurs d'événements

Intégrer des écouteurs d'événements avec la méthode .submit() peut créer des interactions puissantes. Par exemple, vous pouvez définir des conditions selon lesquelles un formulaire ne sera soumis que si certains critères sont remplis, renforçant ainsi la robustesse de votre logique de gestion de formulaire.

Exemple : Soumission conditionnelle du formulaire


html
<form id="conditionalForm">
  Accept Terms: <input type="checkbox" id="acceptTerms">
  <button type="button" onclick="checkAndSubmit()">Submit</button>
</form>
<script>
  function checkAndSubmit() {
    var form = document.getElementById('conditionalForm');
    var termsCheckbox = document.getElementById('acceptTerms');
    if (termsCheckbox.checked) {
      form.submit();
    } else {
      alert('You must accept the terms and conditions to proceed.');
    }
  }
</script>

Ce code fournit un bouton qui, lors du clic, vérifie si une case à cocher est cochée avant de soumettre le formulaire. Si les conditions ne sont pas acceptées, il affiche une alerte à l'utilisateur.

Conclusion

Maîtriser l'événement submit et la méthode .submit() en JavaScript permet aux développeurs de contrôler précisément les comportements des formulaires, garantissant que les données sont traitées correctement avant d'être envoyées à un serveur. Ces techniques sont indispensables pour créer des applications web interactives et réactives qui collectent et gèrent de manière fiable les saisies des utilisateurs. Que vous validiez des données utilisateur, effectuiez des vérifications ou gériez des soumissions de manière programmatique, JavaScript offre les outils nécessaires pour le faire efficacement.

Pratique

Parmi les affirmations suivantes, lesquelles sont vraies concernant l'événement submit et la méthode submit() de JavaScript pour les formulaires ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.