logo oujood
🔍

Balise HTML
: Maîtriser la création et la gestion des formulaires web

Apprenez à créer des formulaires HTML professionnels avec la balise , comprendre ses attributs essentiels, et optimiser l'expérience utilisateur avec les fonctionnalités HTML5 modernes.

OUJOOD.COM

Définition et utilisation de la balise : créer des formulaires HTML interactifs

LES BALISES HTML

La balise <form> constitue l'élément fondamental pour créer des formulaires HTML interactifs permettant la saisie et la collecte de données utilisateur. Cette balise conteneur établit une zone dédiée où les visiteurs peuvent entrer des informations qui seront ensuite transmises et traitées côté serveur par des scripts PHP, Python, ou d'autres langages backend.

En tant qu'élément structurant essentiel des formulaires web, la balise FORM déclare précisément une zone de formulaire interactive dans laquelle les utilisateurs peuvent saisir diverses informations : textes, choix multiples, fichiers à télécharger, et bien d'autres types de données. Ces informations saisies sont ensuite récupérées et traitées côté serveur grâce aux méthodes HTTP GET ou POST.
Il est techniquement possible d'utiliser plusieurs formulaires indépendants dans une même page HTML, à condition absolue de ne jamais les imbriquer l'un dans l'autre, car l'imbrication de formulaires n'est pas valide selon les standards du W3C.

Pour assurer une manipulation efficace des formulaires en JavaScript ou lors du traitement côté serveur, il est fortement recommandé de toujours attribuer une valeur significative à l'attribut name du formulaire. Cet identifiant permet de référencer facilement le formulaire dans vos scripts.
Les structures HTML utilisées à l'intérieur d'un formulaire pour échanger des informations avec l'utilisateur sont nombreuses et incluent les éléments interactifs suivants : <input> (champs de saisie variés), <textarea> (zones de texte multiligne), <button> (boutons personnalisables), <select> (listes déroulantes), <option> (options de menu), <optgroup> (groupements d'options), <fieldset> (regroupement de champs), et <label> (étiquettes descriptives pour l'accessibilité).

Règle fondamentale : L'élément de formulaire <form> ne doit contenir aucun autre élément <form> imbriqué. Cette restriction garantit la validité du code HTML et évite les comportements imprévisibles lors de la soumission des données.

Concernant la syntaxe correcte des formulaires HTML, l'élément de formulaire form doit obligatoirement avoir à la fois une balise d'ouverture <form> et une balise de fermeture </form>. Tout contenu entre ces deux balises fait partie intégrante du formulaire.

Du point de vue du modèle de rendu CSS, l'élément de formulaire <form> est de type block, ce qui signifie qu'il engendre automatiquement un retour à la ligne avant et après l'élément, créant ainsi une séparation visuelle naturelle dans le flux du document.

Exemple pratique : formulaire HTML basique avec champs de saisie et bouton d'envoi

Voici un exemple de formulaire HTML simple démontrant l'utilisation de base de la balise <form> avec deux champs texte pour le nom et le prénom, ainsi qu'un bouton de soumission :

Exemple :   📋 Copier le code

<!-- Formulaire basique avec méthode GET pour transmission des données -->
<form action="" method="get">
  <!-- Champ de saisie pour le nom de famille -->
  Nom : <input type="text" name="nom" placeholder="Entrez votre nom"><br>
  
  <!-- Champ de saisie pour le prénom -->
  Prénom : <input type="text" name="prenom" placeholder="Entrez votre prénom"><br>
  
  <!-- Bouton de soumission du formulaire -->
  <input type="submit" value="Envoyer">
</form>

(Découvrez des exemples avancés de formulaires HTML en bas de cette page, incluant l'upload de fichiers, la validation HTML5, et l'utilisation de différentes méthodes d'envoi)

Support et compatibilité navigateurs pour la balise <form>

Internet Explorer Firefox Opera Google Chrome Safari

La balise <form> est universellement prise en charge dans tous les principaux navigateurs web modernes et anciens : Internet Explorer (toutes versions), Firefox, Chrome, Safari, Opera, Edge, et leurs équivalents mobiles. Cette compatibilité totale garantit que vos formulaires HTML fonctionneront correctement sur tous les appareils et plateformes.

Évolution HTML : différences entre HTML 4.01 et HTML5 pour les formulaires

HTML5 a introduit des améliorations significatives pour les formulaires web en ajoutant deux nouveaux attributs puissants : autocomplete (pour la saisie semi-automatique des champs) et novalidate (pour désactiver la validation native du navigateur). Parallèlement, HTML5 a supprimé l'attribut accept de la balise <form> (cet attribut est maintenant utilisé uniquement sur les éléments <input type="file">), simplifiant ainsi la spécification et améliorant la cohérence du standard.

Différences XHTML : considérations pour l'attribut name

Dans le contexte de XHTML strict, l'attribut name est officiellement déconseillé (deprecated) pour la balise <form>. Il est recommandé d'utiliser à la place l'attribut id global, qui offre les mêmes fonctionnalités d'identification tout en respectant les normes XHTML plus strictes concernant les attributs d'identification.

Attributs de la balise <form> : référence complète et détaillée

Nouveau : Indique les attributs introduits avec HTML5.

Attribut Valeur Description
accept MIME_type N'est plus pris en charge par HTML5. Spécifiait auparavant les types de fichiers MIME que le serveur acceptait via l'upload de fichiers (fonctionnalité déplacée vers <input type="file">)
accept-charset character_set Spécifie l'encodage de caractères (charset) qui doit être utilisé pour l'envoi et le traitement des données du formulaire côté serveur
action URL Spécifie l'URL de destination où envoyer les données du formulaire lors de la soumission (page de traitement PHP, script backend, API REST, etc.)
autocomplete Nouveau on
off
Spécifie si le formulaire doit avoir la saisie semi-automatique activée (on) ou désactivée (off), permettant au navigateur de suggérer des valeurs précédemment saisies
enctype application/x-www-form-urlencoded
multipart/form-data
text/plain
Spécifie comment les données du formulaire doivent être encodées lors de la soumission au serveur (obligatoire uniquement pour method="post", essentiel pour l'upload de fichiers)
method get
post
Spécifie la méthode HTTP à utiliser pour l'envoi des données : GET (données visibles dans l'URL) ou POST (données dans le corps de la requête, plus sécurisé)
name texte Spécifie le nom d'identification du formulaire, utilisé pour référencer le formulaire en JavaScript ou dans les scripts de traitement
novalidate Nouveau novalidate Attribut booléen qui spécifie que le formulaire ne doit pas être validé automatiquement par le navigateur lors de la soumission (utile pour validation personnalisée en JavaScript)
target _blank
_self
_parent
_top
Spécifie l'emplacement où afficher la réponse reçue après soumission du formulaire : nouvelle fenêtre (_blank), même fenêtre (_self), frame parent (_parent), ou fenêtre complète (_top)

Attributs globaux HTML : support universel

La balise <form> prend également en charge tous les attributs globaux HTML, incluant id, class, style, data-*, tabindex, contenteditable, et tous les autres attributs universels applicables à n'importe quel élément HTML.

Événements JavaScript : gestion des interactions formulaire

La balise <form> prend également en charge tous les attributs d'événements JavaScript HTML, notamment onsubmit (déclenché lors de la soumission), onreset (lors de la réinitialisation), onchange, oninput, et tous les gestionnaires d'événements standards permettant une interaction dynamique avec l'utilisateur.

L'attribut accept-charset : encodage des caractères du formulaire

Définition et utilisation de accept-charset

L'attribut accept-charset spécifie l'encodage de caractères (charset) qui doit être utilisé pour l'envoi et le traitement des données du formulaire côté serveur. Cet attribut est crucial pour garantir que les caractères spéciaux, les accents, et les symboles non-ASCII sont correctement transmis et interprétés.

La valeur par défaut est la chaîne réservée "UNKNOWN" (inconnu), qui indique que l'encodage correspond automatiquement à l'encodage du document HTML contenant l'élément <form>. Dans la plupart des cas modernes, l'encodage UTF-8 est utilisé par défaut.

Syntaxe de accept-charset

<form accept-charset="character_set">

Valeurs d'attribut accept-charset

Valeur Description
CHARACTER_SET

Une liste séparée par des espaces d'un ou plusieurs encodages de caractères qui doivent être utilisés pour l'envoi et le traitement des données du formulaire.

Valeurs communes et recommandées :

UTF-8 - Encodage Unicode universel (recommandé pour tous les nouveaux projets web, supporte tous les caractères et symboles mondiaux)

ISO-8859-1 - Encodage pour l'alphabet Latin (Europe occidentale, caractères accentués français, espagnols, etc.)

En théorie, n'importe quel encodage de caractères enregistré peut être utilisé (ISO-8859-15, Windows-1252, etc.), mais aucun navigateur ne comprend l'intégralité des encodages existants. Plus largement un encodage est utilisé, plus grande est la chance qu'un navigateur le supporte correctement. UTF-8 est aujourd'hui le standard universel recommandé.

Exemple : formulaire avec encodage ISO-8859-1 spécifié

Cet exemple démontre l'utilisation de l'attribut accept-charset pour forcer un encodage ISO-8859-1 lors de la soumission du formulaire :

Exemple :   📋 Copier le code

<!-- Formulaire avec encodage ISO-8859-1 pour l'alphabet latin -->
<form action="" accept-charset="ISO-8859-1">
  <!-- Les données seront encodées en ISO-8859-1 lors de l'envoi -->
  Nom : <input type="text" name="nom"><br>
  Prénom : <input type="text" name="prenom"><br>
  <input type="submit" value="Envoyer">
</form>

Support navigateur pour accept-charset

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut accept-charset est universellement pris en charge par tous les navigateurs principaux modernes et anciens, garantissant un encodage correct des données soumises.

Différences entre HTML 4.01 et HTML5 pour accept-charset

Dans HTML 4.01, la liste des encodages de caractères pouvait être délimitée indifféremment par des espaces ou des virgules. En HTML5, la liste doit obligatoirement être séparée par des espaces uniquement, conformément à la simplification et à l'uniformisation de la syntaxe HTML5.

L'attribut action : destination du traitement du formulaire

Définition et utilisation de l'attribut action

L'attribut action spécifie où envoyer les données du formulaire lorsqu'un formulaire est soumis par l'utilisateur. En d'autres termes, l'attribut action désigne l'URL de la page de traitement (script PHP, API REST, fonction serverless, etc.) qui se chargera de recevoir, valider et traiter les données envoyées par le formulaire. Cet attribut est l'un des plus critiques pour le fonctionnement d'un formulaire web.

Syntaxe de l'attribut action

<form action="URL">

Valeurs possibles de l'attribut action

Valeur Description
URL

Spécifie où envoyer les données du formulaire lorsque celui-ci est soumis (clic sur bouton submit ou validation par Enter).

Valeurs possibles et cas d'usage :

URL absolue - Pointe vers un autre site web ou domaine externe (exemple : action="https://www.example.com/traitement/form-handler.php"). Utile pour envoyer des données vers une API tierce ou un service externe.

URL relative - Pointe vers un fichier dans le même site web (exemple : action="traitement/handler.php" ou action="../process-form.php"). C'est l'approche la plus courante pour les formulaires standards.

URL vide - action="" ou action=" " (vide) qui renvoie vers la même page qui contient le formulaire, permettant un traitement PHP sur la même page (pattern auto-traitement très utilisé).

Exemple : envoi des données vers une page de traitement PHP

Lors de la soumission, ce formulaire enverra les données vers le fichier "page-traitement.php" pour traitement côté serveur :

Exemple :   📋 Copier le code

<!-- Formulaire envoyant les données vers page-traitement.php via GET -->
<form action="page-traitement.php" method="get">
  <!-- Les données nom et prénom seront accessibles via $_GET en PHP -->
  Nom : <input type="text" name="nom" required><br>
  Prénom : <input type="text" name="prenom" required><br>
  
  <!-- Bouton déclenchant la soumission vers l'URL action -->
  <input type="submit" value="Envoyer les données">
</form>

Support navigateur pour l'attribut action

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut action est universellement pris en charge dans tous les principaux navigateurs depuis leurs premières versions, garantissant une compatibilité totale pour vos formulaires web.

Différences entre HTML 4.01 et HTML5 pour action

En HTML5, l'attribut action n'est plus techniquement nécessaire (il peut être omis). Si l'attribut action est absent, le formulaire est soumis à l'URL de la page courante par défaut. Cependant, pour la clarté du code et la maintenance, il est toujours recommandé de spécifier explicitement l'attribut action.

L'attribut autocomplete : saisie semi-automatique des formulaires

Définition et utilisation de autocomplete

L'attribut autocomplete spécifie si un formulaire doit avoir la fonction de saisie semi-automatique activée ou désactivée. Cette fonctionnalité HTML5 améliore considérablement l'expérience utilisateur en permettant au navigateur de se souvenir et de suggérer automatiquement les valeurs précédemment saisies.

Lorsque la saisie semi-automatique est activée (autocomplete="on"), le navigateur affiche automatiquement dans une liste déroulante toutes les valeurs que l'utilisateur a entrées auparavant dans des champs similaires, accélérant ainsi la saisie et réduisant les erreurs de frappe.

astuceAstuce avancée : Il est parfaitement possible d'avoir la saisie semi-automatique activée (« on ») pour le formulaire global et désactivée (« off ») pour des champs d'entrée spécifiques sensibles (comme les numéros de carte bancaire), ou vice versa. Cette granularité permet un contrôle fin de la sécurité et de l'expérience utilisateur.

Syntaxe de autocomplete

<form autocomplete="on|off">

Valeurs d'attribut autocomplete

Valeur Description
on Valeur par défaut. Le navigateur suggérera automatiquement et complétera les valeurs basées sur ce que l'utilisateur a saisi précédemment dans des champs similaires. Améliore l'expérience utilisateur pour les formulaires fréquemment utilisés.
off L'utilisateur doit entrer manuellement une valeur complète dans chaque champ à chaque utilisation. Le navigateur ne complète pas automatiquement les entrées et ne propose pas de suggestions. Recommandé pour les données sensibles (mots de passe à usage unique, codes PIN, etc.).

Exemple : formulaire avec saisie semi-automatique activée

Ce formulaire permettra au navigateur de suggérer automatiquement les noms et prénoms précédemment saisis :

Exemple :   📋 Copier le code

<!-- Formulaire avec autocomplete activé pour améliorer l'UX -->
<form action="page-traitement.php" autocomplete="on" method="get">
  <!-- Le navigateur suggérera les noms précédemment saisis -->
  Nom : <input type="text" name="nom"><br>
  
  <!-- Le navigateur suggérera les prénoms précédemment saisis -->
  Prénom : <input type="text" name="prenom"><br>
  
  <input type="submit" value="Envoyer">
</form>

Support navigateur pour autocomplete

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut autocomplete est pris en charge dans tous les principaux navigateurs modernes (Internet Explorer 10+, Firefox, Chrome, Safari, Edge), à l'exception notable d'Opera dans ses anciennes versions. Le support est maintenant quasi-universel.

Différences entre HTML 4.01 et HTML5

L'attribut autocomplete est une nouveauté introduite en HTML5. Il n'existait pas dans les versions antérieures d'HTML (HTML 4.01, XHTML 1.0), reflétant l'évolution des standards web vers une meilleure expérience utilisateur et une interaction plus intelligente avec les formulaires.

L'attribut enctype : encodage des données du formulaire

Définition et utilisation de enctype

L'attribut enctype (encoding type) spécifie comment les données du formulaire doivent être encodées lors de la soumission d'une requête au serveur. Cet attribut est absolument crucial pour le bon fonctionnement de l'upload de fichiers et la transmission correcte des données.

Remarque importante : L'attribut enctype peut être utilisé uniquement si method="post". Il n'a aucun effet avec la méthode GET car les données GET sont toujours encodées dans l'URL selon le format application/x-www-form-urlencoded.

Syntaxe de enctype

<form enctype="value">

Valeurs d'attribut enctype : comparaison détaillée

Valeur Description
application/x-www-form-urlencoded Valeur par défaut. Tous les caractères sont encodés avant l'envoi : les espaces sont convertis en symboles « + » et les caractères spéciaux sont convertis en valeurs ASCII hexadécimales (percent-encoding : %20, %3A, etc.). Idéal pour les formulaires textuels standards sans upload de fichiers.
multipart/form-data Les caractères ne sont pas encodés. Cette valeur est absolument requise lorsque vous utilisez des formulaires qui possèdent un contrôle d'upload de fichiers (<input type="file">). Permet la transmission de données binaires (images, PDF, vidéos, etc.) sans corruption.
text/plain Les espaces sont convertis en symboles « + », mais aucun caractère spécial n'est encodé. Rarement utilisé en production, principalement pour le débogage ou l'envoi d'emails simples. Non recommandé pour les applications réelles.

Exemple : formulaire avec upload de fichier utilisant multipart/form-data

Pour permettre l'upload de fichiers, il est impératif d'utiliser enctype="multipart/form-data" :

Exemple :   📋 Copier le code

<!-- Formulaire d'upload - OBLIGATOIRE : method="post" et enctype="multipart/form-data" -->
<form action="page-traitement.php" method="post" enctype="multipart/form-data">
  <!-- Champs texte standards -->
  Nom : <input type="text" name="nom"><br>
  Prénom : <input type="text" name="prenom"><br>
  
  <!-- Champ d'upload de fichier - nécessite multipart/form-data -->
  Télécharger un fichier : <input type="file" name="fichier"><br>
  
  <input type="submit" value="Envoyer">
</form>

Support navigateur pour enctype

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut enctype est universellement pris en charge dans tous les principaux navigateurs depuis leurs premières versions, garantissant un fonctionnement fiable de l'upload de fichiers.

Différences entre HTML 4.01 et HTML5 pour enctype

AUCUNE différence. L'attribut enctype fonctionne de manière identique en HTML 4.01 et HTML5, avec les mêmes valeurs possibles et la même sémantique.

L'attribut method : méthode HTTP de soumission du formulaire

Définition et utilisation de l'attribut method

L'attribut method spécifie la méthode HTTP à utiliser pour envoyer les données du formulaire vers le serveur (la page spécifiée dans l'attribut action). Le choix entre GET et POST a des implications majeures sur la sécurité, la visibilité des données, et les limitations de taille.

Les données du formulaire peuvent être envoyées de deux manières principales : comme variables d'URL (avec method="get") ou comme transaction HTTP POST dans le corps de la requête (avec method="post"). Chaque méthode a ses cas d'usage appropriés.

Notes importantes sur GET vs POST

Caractéristiques de la méthode GET :

✓ Ajoute les données du formulaire dans l'URL sous forme de paires nom/valeur (exemple : page.php?nom=Dupont&prenom=Jean)
✗ La longueur d'URL est strictement limitée (environ 2000-3000 caractères selon les navigateurs et serveurs)
Ne jamais utiliser GET pour envoyer des données sensibles ! (mots de passe, informations bancaires, etc.) car elles seront visibles dans l'URL, l'historique du navigateur, et les logs serveur
✓ Utile pour les soumissions de formulaire où un utilisateur souhaite mettre en favori ou partager le résultat (recherches, filtres, pagination)
✓ GET est idéal pour les opérations de lecture sans effet de bord (recherches Google, filtres de produits, etc.)
✓ Les requêtes GET sont cachées par les navigateurs et peuvent être mises en cache

Caractéristiques de la méthode POST :

✓ Ajoute les données du formulaire dans le corps de la requête HTTP (les données ne sont pas visibles dans l'URL)
✓ Ne présente aucune limitation de taille pratique (dépend uniquement de la configuration serveur)
Recommandé pour toutes les soumissions contenant des données sensibles (authentification, paiements, informations personnelles)
✓ POST doit être utilisé pour les opérations qui modifient l'état du serveur (créer, mettre à jour, supprimer des ressources)
✓ Les données POST ne peuvent pas être mises en cache par le navigateur
✓ Ne peut pas être mis en favoris (comportement souhaité pour les actions modificatrices)

Syntaxe de l'attribut method

<form method="get|post">

Valeurs d'attribut method

Valeur Description
get Valeur par défaut. Ajoute les données du formulaire à l'URL dans des paires nom/valeur sous le format : URL?nom=valeur&nom2=valeur2. Visible dans la barre d'adresse, limité en taille, idéal pour recherches et filtres.
post Envoie les données du formulaire comme une transaction HTTP POST dans le corps de la requête. Invisible dans l'URL, sans limitation de taille, obligatoire pour données sensibles et upload de fichiers.

Exemple : soumission de formulaire avec la méthode GET

Formulaire utilisant GET, approprié pour une recherche ou un filtre non-sensible :

Exemple :   📋 Copier le code

<!-- Formulaire GET - Les données apparaîtront dans l'URL -->
<!-- Résultat : page-traitement.php?nom=Dupont&prenom=Jean -->
<form action="page-traitement.php" method="get">
  <!-- Accessible en PHP via $_GET['nom'] -->
  Nom : <input type="text" name="nom"><br>
  
  <!-- Accessible en PHP via $_GET['prenom'] -->
  Prénom : <input type="text" name="prenom"><br>
  
  <input type="submit" value="Rechercher">
</form>

Exemple : soumission de formulaire avec la méthode POST

Formulaire utilisant POST, recommandé pour tout formulaire contenant des données sensibles ou volumineuses :

Exemple :   📋 Copier le code

<!-- Formulaire POST - Les données sont envoyées dans le corps de la requête -->
<!-- Les données ne sont PAS visibles dans l'URL -->
<form action="page-traitement.php" method="post">
  <!-- Accessible en PHP via $_POST['nom'] -->
  Nom : <input type="text" name="nom"><br>
  
  <!-- Accessible en PHP via $_POST['prenom'] -->
  Prénom : <input type="text" name="prenom"><br>
  
  <input type="submit" value="Envoyer de manière sécurisée">
</form>

Support navigateur pour method

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut method est universellement pris en charge dans tous les principaux navigateurs depuis leurs toutes premières versions, garantissant une compatibilité totale.

Différences entre HTML 4.01 et HTML5

AUCUNE différence. L'attribut method fonctionne de manière identique en HTML 4.01 et HTML5.

L'attribut name : identifier le formulaire

Définition et utilisation de l'attribut name

L'attribut name spécifie le nom d'identification unique du formulaire. Cet attribut est essentiel pour la manipulation et l'accès au formulaire via JavaScript et pour le traitement côté serveur.

L'attribut name est utilisé principalement pour référencer les éléments du formulaire en JavaScript (via document.forms['nomFormulaire'] ou document.nomFormulaire), et pour identifier le formulaire lors du traitement des données après soumission, notamment dans les applications complexes gérant plusieurs formulaires simultanément.

Syntaxe de l'attribut name

<form name="texte">

Valeurs d'attribut name

Valeur Description
texte Spécifie le nom d'identification du formulaire. Doit être unique dans la page si vous souhaitez manipuler le formulaire en JavaScript. Utilisez des noms descriptifs et significatifs (exemples : "formulaireContact", "formInscription", "searchForm").

Exemple : formulaire avec attribut name pour manipulation JavaScript

Formulaire nommé permettant un accès facile via JavaScript :

Exemple :   📋 Copier le code

<!-- Formulaire avec nom pour accès JavaScript facile -->
<!-- Accessible via : document.forms['monFormulaire'] ou document.monFormulaire -->
<form action="page-traitement.php" method="get" name="monFormulaire">
  <!-- Champs du formulaire -->
  Nom : <input type="text" name="nom"><br>
  Prénom : <input type="text" name="prenom"><br>
  
  <input type="submit" value="Envoyer">
</form>

<!-- Exemple d'accès JavaScript -->
<script>
// Accéder au formulaire par son nom
const form = document.forms['monFormulaire'];
// ou : const form = document.monFormulaire;

// Accéder aux valeurs des champs
console.log(form.nom.value);
console.log(form.prenom.value);
</script>

Support navigateur pour name

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut name est universellement pris en charge dans tous les principaux navigateurs.

Différences entre HTML 4.01 et HTML5

AUCUNE différence. L'attribut name fonctionne de manière identique.

Différences entre HTML et XHTML

Dans XHTML strict, l'attribut name est officiellement déconseillé (deprecated). Il est recommandé d'utiliser l'attribut id global à la place pour l'identification des formulaires, conformément aux standards XHTML plus rigoureux.

L'attribut novalidate : désactiver la validation HTML5

Définition et utilisation de novalidate

L'attribut novalidate est un attribut booléen HTML5 qui désactive la validation native du navigateur.

Lorsqu'il est présent, il spécifie que les données du formulaire (input) ne doivent pas être validées automatiquement par le navigateur lorsque le formulaire est soumis. Cet attribut est particulièrement utile lorsque vous souhaitez implémenter votre propre système de validation personnalisé en JavaScript, ou pour tester un formulaire sans être bloqué par les contraintes de validation.

Syntaxe de novalidate

<form novalidate>

Remarque sur les attributs booléens : L'attribut novalidate est un attribut booléen et peut être défini de plusieurs manières équivalentes conformément au standard HTML5 :

<form novalidate> <!-- Syntaxe HTML5 recommandée -->

<form novalidate="novalidate"> <!-- Syntaxe XHTML -->

<form novalidate=""> <!-- Syntaxe alternative -->

Exemple : formulaire sans validation automatique du navigateur

Ce formulaire ne sera pas validé automatiquement, permettant une validation JavaScript personnalisée :

Exemple :   📋 Copier le code

<!-- Formulaire sans validation native - utile pour validation JavaScript personnalisée -->
<form action="" novalidate>
  <!-- Le champ email ne sera PAS validé par le navigateur même si invalide -->
  <!-- Vous devrez implémenter votre propre validation en JavaScript -->
  E-mail : <input type="email" name="user_email" required>
  
  <input type="submit" value="Envoyer sans validation">
</form>

Support navigateur pour novalidate

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut novalidate fonctionne dans tous les principaux navigateurs modernes, à l'exception notable d'Internet Explorer 9 et versions antérieures, et de Safari dans ses anciennes versions. Le support est maintenant excellent dans les navigateurs récents (IE 10+, tous les navigateurs modernes).

Différences entre HTML 4.01 et HTML5

L'attribut novalidate est une nouveauté HTML5. Il n'existait pas dans HTML 4.01 car la validation côté client native n'existait pas avant HTML5.

L'attribut target : destination de l'affichage de la réponse

Définition et utilisation de l'attribut target

L'attribut target spécifie un nom ou un mot-clé qui indique où afficher la réponse qui est reçue après avoir soumis et traité le formulaire. Cet attribut contrôle le contexte de navigation pour l'affichage du résultat.

L'attribut target définit un nom de contexte de navigation, ou un mot-clé prédéfini, pour un cadre de navigation (par exemple : nouvel onglet, même fenêtre, frame parent, ou iframe nommée).

Syntaxe de target

<form target="_blank|_self|_parent|_top|framename">

Valeurs d'attribut target : référence complète

Valeur Description
_blank La réponse s'affiche dans une nouvelle fenêtre ou un nouvel onglet du navigateur. Utile pour ouvrir des résultats sans quitter la page courante, ou pour afficher des confirmations dans un contexte séparé.
_self La réponse s'affiche dans le même cadre de navigation (la même fenêtre/onglet). C'est la valeur par défaut si l'attribut target n'est pas spécifié. Comportement standard pour la plupart des formulaires.
_parent La réponse est affichée dans le cadre de navigation parent. Si le formulaire est dans une iframe, la réponse s'affiche dans la fenêtre qui contient l'iframe. Si pas de parent, équivaut à _self.
_top La réponse s'affiche dans le corps entier de la fenêtre, remplaçant toutes les frames. Utile pour "sortir" d'un système de frames et afficher la réponse en plein écran.
frameName La réponse est affichée dans une iframe ou frame nommée spécifique ayant le nom "frameName". Permet un contrôle précis de l'affichage dans des architectures multi-frames complexes.

Exemple : affichage de la réponse dans un nouvel onglet

Ce formulaire ouvrira la réponse dans une nouvelle fenêtre ou un nouvel onglet :

Exemple :   📋 Copier le code

<!-- La réponse s'ouvrira dans un nouvel onglet/fenêtre -->
<!-- Utile pour ne pas perdre le formulaire en cours -->
<form action="" target="_blank">
  <!-- Champ email avec validation HTML5 -->
  E-mail : <input type="email" name="user_email" required>


Support navigateur pour target

Internet Explorer Firefox Opera Google Chrome Safari

L'attribut target est universellement pris en charge dans tous les principaux navigateurs.

Différences entre HTML 4.01 et HTML5

L'attribut target est de nouveau pris en charge dans HTML5 après avoir été déprécié en HTML 4.01 Strict.

L'attribut target était déconseillé (deprecated) en HTML 4.01 Strict mais autorisé en HTML 4.01 Transitional.

Remarque sur l'utilisation moderne : Étant donné que les frames et framesets ne sont plus supportés dans HTML5 et sont considérés obsolètes, les valeurs _parent et framename sont aujourd'hui principalement utilisées avec les iframes modernes pour des cas d'usage spécifiques (widgets embarqués, intégrations tierces, etc.).

Exemples avancés de formulaires HTML : cas d'usage pratiques

Formulaire avec cases à cocher (checkboxes)

Les cases à cocher permettent une sélection multiple d'options. Voici un formulaire démontrant leur utilisation :

Exemple :   📋 Copier le code

<!-- Formulaire avec cases à cocher pour sélection multiple -->
<form action="" method="get">
  <!-- Case à cocher pour moto - non cochée par défaut -->
  <input type="checkbox" name="vehicule[]" value="Moto" id="moto">
  <label for="moto">J'ai une moto</label><br>
<!-- Case à cocher pour voiture - cochée par défaut avec checked -->


<!-- Case à cocher pour vélo -->

Formulaire avec boutons radio (choix unique)

Les boutons radio permettent une sélection unique parmi plusieurs options. Exemple de formulaire avec choix de genre :

Exemple :   📋 Copier le code

<!-- Formulaire avec boutons radio pour choix exclusif -->
<form action="" method="get">
  <!-- Bouton radio homme - même attribut "name" pour groupe -->
  <input type="radio" name="sexe" value="Homme" id="homme">
  <label for="homme">Je suis un homme</label><br>
<!-- Bouton radio femme - même "name" garantit choix unique -->


<!-- Bouton radio autre -->

Exemple : zone de texte multiligne (textarea) dans un formulaire

Formulaire intégrant une zone de saisie de texte multiligne pour commentaires ou messages longs :

Exemple :   📋 Copier le code

<!-- Formulaire avec zone de texte multiligne pour contenu long -->
<form name="formulaire_texte" action="Balise-FORM.html" method="get" target="_self">
  <!-- Label pour accessibilité -->
  <label for="message">Votre message :</label><br>
<!-- Textarea avec 4 lignes visibles et 40 colonnes de large -->


<!-- Bouton de soumission --> <!-- Bouton de réinitialisation pour effacer tous les champs -->

Ressources complémentaires : pages en relation avec les formulaires HTML

Pour approfondir vos connaissances sur les formulaires HTML et leur traitement, consultez ces ressources complémentaires :

Les formulaires en HTML - Guide complet sur la création de formulaires web accessibles et fonctionnels

Manipulation et traitement de formulaires en PHP - Apprendre à traiter les données $_GET et $_POST côté serveur

jQuery sélecteurs des éléments de formulaire - Manipulation avancée des formulaires avec jQuery

       Vous êtes ici : Balise <form>         Retour à la liste complète des balises HTML





Retour à l'accueil du site

Par carabde | Mis à jour le 28 novembre 2025