📚 Les formulaires
Les formulaires HTML permettent aux utilisateurs de saisir et soumettre des données. Ils sont essentiels pour les inscriptions, connexions, commandes, sondages, recherches et toute interaction nécessitant une entrée de données de l'utilisateur.
Dans le cours, nous verrons les balises de base d'un formulaire, mais nous n'en ferons pas l'envoi en tant que tel. En effet, pour soumettre le formulaire et traiter les données, il faut soit un serveur Web capable de recevoir les données ou encore avoir recours à JavaScript pour les traiter côté navigateur.
Structure de Base d'un formulaire
L'élément <form>
Tout formulaire commence par la balise <form>
:
<form>
<!-- Champs du formulaire -->
</form>
La balise form
peut prendre certains attributs tels que:
action
: URL où envoyer les donnéesmethod
: Méthode HTTP (GET ou POST)enctype
: Type d'encodage (pour l'upload de fichiers)
Cependant, pour les besoins du cours, nous utilisons la balise form
seule. En effet, les attributs supplémentaires seront traités dans vos autres cours de Web.
L'élément <input>
et <label>
Pour accepter des entrées en provenance de l'utilisateur, des champs de formulaire permettant la saisi utilisateur doivent être présents. La balise de base pour créer un champ de saisie est la balise <input>
. La balise <label>
quant à elle permet d'associer un libellé au champ texte.
Champ texte simple avec input
Afin d'afficher un champ texte simple, on peut utiliser input
avec le type (attribut) text
:
Identifier un champ avec label
Pour identifier le champ, on peut utiliser <label>
:
Libellé et retour de ligne
Pour afficher le libellé au dessus du champ, on peut simplement appliquer un retour de ligne.
Associer un libellé au champ avec for
Il est important de communiquer à quel champ le libellé est associé. Pour cela, on utilise l'attribut for
, associé à un id
sur la balise input
.
Par exemple:
La valeur associée à for
et à id
doivent correspondre! On vient dire: ce libellé est pour (for) l'indentidiant précisé.
Invite à la saisi avec placeholder
Il est possible de mettre une valeur d'exemple dans un champ à l'aide de l'attribut placeholder
de la façon suivante:
L'attribut placeholder rend le formulaire plus invitant et permet d'apporter des précisions sur certains champs.
Bouton d'envoi
Pour soumettre le formulaire, il est possible d'ajouter un bouton à l'aide de la balise <button>
.
<button type="submit">Envoyer</button>
Organiser plusieurs champs à l'aide de div
Lorsque vous avez plusieurs champs dans votre formulaire, cela aura pour effet de les mettre un à la suite de l'autre, comme ceci:
Pour éviter cette situation, utilisez des div pour regrouper ensemble le champ et son libellé!
Zone de texte multilignes - <textarea>
Pour afficher un champ texte pouvant afficher plusieurs lignes, vous pouvez utiliser la balise textarea
.
Attributs utiles:
rows
: Nombre de lignes visiblescols
: Nombre de colonnes (caractères par ligne)maxlength
: Limite de caractères
L'élément input
plus en détail
Nous venons de voir la base de l'élément input
, c'est-à-dire en l'utilisant pour un champ texte à l'aide de type="text"
, mais il existe d'autres types.
Champs texte de base
type="text"
- Texte simple
type="email"
- Adresse email
L'utilité par rapport à un champ texte conventionnel est une validation en provenance du navigateur lorsqu'on essaie de soumettre un formulaire ayant un champ courriel pour lequel le courriel n'est pas dans un format valide. Par exemple:
type="password"
- Mot de passe
Un champ password
masquera l'entrée de l'utilisateur automatiquement.
type="url"
- URL
Champs numériques - type="number"
Champs de date - type="date"
Champs de sélection
type="radio"
- Boutons radio (choix unique)
type="checkbox"
- Cases à cocher (choix multiples)
Champs de fichier
type="file"
- Upload de fichier
<label for="cv">CV (PDF) :</label>
<input type="file" id="cv">
<select>
- Liste déroulante
La balise <select>
permet d'afficher une liste déroulante, c'est-à-dire un menu offrant des options fixes parmis lesquelles l'utilisateur doit choisir. On utilise ce champ lorsqu'on ne veut pas lister dans la page toutes les possibilités puisque cela allourdirait inutilement l'interface.
Validations de champs requis
Pour valider qu'un champ doit être rempli avant de soumettre le formulaire, il est possible de simplement ajouter l'attribut required
sur ce dernier.
<input type="text" id="prenom" placeholder="Votre prénom" required>
Cela aura pour effet de déclencer un message d'erreur si les champs ne sont pas remplis:
Bonnes Pratiques
Structure et organisation
- Associez toujours les labels avec les champs (
for
etid
) - Ordonnez logiquement les champs (informations personnelles → contact → préférences)
- Un label par champ - soyez explicites
Expérience utilisateur
- Utilisez les bons types d'input (email, tel, number, etc.)
- Utilisez
required
pour valider les champs requis - Fournissez des
placeholder
utiles