Exercice 0 : Formulaire d'inscription (HTML uniquement)¶
Objectif
Cet exercice se concentre exclusivement sur la structure HTML des formulaires. Vous n'avez pas besoin de CSS pour cet exercice. L'objectif est de maîtriser les différents types de champs, attributs, et bonnes pratiques HTML.
Workflow Git
Avant de commencer cet exercice :
Contexte¶
Vous devez créer un formulaire d'inscription complet pour une plateforme éducative en ligne. Ce formulaire doit collecter toutes les informations nécessaires pour créer un compte étudiant.
Introduction : <fieldset> et <legend>¶
Nouveaux éléments HTML
Cet exercice introduit deux balises HTML que vous n'avez peut-être pas encore vues en cours : <fieldset> et <legend>.
Qu'est-ce qu'un <fieldset> ?¶
Un <fieldset> est une balise HTML qui permet de regrouper logiquement des champs de formulaire qui sont liés entre eux. Il crée une bordure visuelle autour du groupe de champs.
Syntaxe :
Qu'est-ce qu'une <legend> ?¶
Une <legend> est le titre d'un <fieldset>. Elle décrit le groupe de champs et s'affiche généralement en haut de la bordure du fieldset.
Syntaxe :
Exemple complet¶
Voici un exemple concret d'utilisation de <fieldset> et <legend> :
Résultat visuel¶
Le navigateur affichera :
Exemple réel
Pourquoi utiliser <fieldset> et <legend> ?¶
- Organisation visuelle : Rend le formulaire plus clair et structuré
- Accessibilité : Les lecteurs d'écran annoncent le groupe de champs, aidant les utilisateurs malvoyants
- Sémantique : Indique au navigateur et aux moteurs de recherche la structure logique du formulaire
- Meilleure UX : L'utilisateur comprend mieux quelles informations sont demandées
Astuce CSS (optionnel)
Par défaut, <fieldset> a une bordure. Plus tard, vous pourrez la personnaliser avec CSS :
1. Structure de base du formulaire¶
- Créez un fichier
inscription.htmldans le dossierexercice-0. - Le formulaire doit utiliser la balise
<form>avec les attributs suivants :action:/submit-inscription(fictif)method:POSTenctype:multipart/form-data(pour l'upload de fichiers)
2. Section : Informations personnelles¶
Créez une première section avec un <fieldset> et une <legend> intitulée "Informations personnelles".
Cette section doit contenir :
- Civilité (boutons radio obligatoires) :
- M.
- Mme
- Autre
- Prénom (champ texte obligatoire, max 50 caractères)
- Nom (champ texte obligatoire, max 50 caractères)
- Date de naissance (champ de type date, obligatoire)
- Lieu de naissance (champ texte, max 100 caractères)
Astuce
Utilisez l'attribut required pour les champs obligatoires et maxlength pour limiter la longueur.
Exemple de code pour cette section
Voici un exemple complet de comment structurer cette section avec <fieldset> et <legend> :
Points clés :
- Tous les boutons radio pour "Civilité" ont le même
name="civilite"(obligatoire !) - Chaque
<input>a unidunique - Chaque
<label>a un attributforqui correspond à l'idde l'input - Les champs obligatoires ont l'attribut
required - Les champs texte ont
maxlengthpour limiter la longueur
3. Section : Coordonnées¶
Créez une deuxième section avec un <fieldset> et une <legend> intitulée "Coordonnées".
Cette section doit contenir :
- Adresse email (champ email obligatoire avec validation)
- Téléphone (champ tel avec pattern français :
pattern="0[1-9][0-9]{8}") - Adresse postale (zone de texte sur 3 lignes, obligatoire)
- Code postal (champ texte, pattern 5 chiffres :
pattern="[0-9]{5}") - Ville (champ texte obligatoire)
- Pays (liste déroulante avec au moins 5 pays, France sélectionnée par défaut)
4. Section : Formation¶
Créez une troisième section avec un <fieldset> et une <legend> intitulée "Formation".
Cette section doit contenir :
- Niveau d'études (liste déroulante obligatoire) :
- Bac
- Bac +2
- Bac +3
- Bac +5
- Doctorat
- Domaine d'études (liste déroulante obligatoire) :
- Informatique
- Mathématiques
- Physique
- Électronique
- Autre
- Établissement actuel (champ texte, max 100 caractères)
- Année d'obtention du diplôme (champ number, min 1950, max 2030)
5. Section : Préférences de cours¶
Créez une quatrième section avec un <fieldset> et une <legend> intitulée "Préférences de cours".
Cette section doit contenir :
- Cours souhaités (cases à cocher multiples, au moins 3 choix) :
- Développement Web
- Développement Mobile
- Intelligence Artificielle
- Cybersécurité
- Base de données
- Cloud Computing
- Niveau souhaité (boutons radio) :
- Débutant
- Intermédiaire
- Avancé
- Disponibilité (sélection multiple avec
<select multiple>) :- Lundi
- Mardi
- Mercredi
- Jeudi
- Vendredi
- Samedi
- Dimanche
Select multiple
Utilisez l'attribut multiple et size="7" pour afficher toutes les options.
6. Section : Documents¶
Créez une cinquième section avec un <fieldset> et une <legend> intitulée "Documents".
Cette section doit contenir :
- Photo d'identité (champ file, accepte uniquement jpg, jpeg, png, max 2MB)
- Utilisez :
accept="image/jpeg,image/png"
- Utilisez :
- CV (champ file, accepte uniquement PDF)
- Utilisez :
accept="application/pdf"
- Utilisez :
- Lettre de motivation (zone de texte, 10 lignes minimum, avec placeholder explicatif)
7. Section : Validation et conditions¶
Créez une dernière section avec :
- Mot de passe (champ password obligatoire, min 8 caractères)
- Ajoutez un attribut
minlength="8" - Ajoutez un
patternpour exiger au moins une majuscule, une minuscule et un chiffre
- Ajoutez un attribut
- Confirmation mot de passe (champ password obligatoire)
- Acceptation des conditions (case à cocher obligatoire) :
- "J'accepte les conditions générales d'utilisation"
- Lien vers les CGU (fictif :
#cgu)
- Newsletter (case à cocher optionnelle) :
- "Je souhaite recevoir la newsletter hebdomadaire"
- Commentaires supplémentaires (zone de texte optionnelle, 5 lignes)
8. Boutons d'action¶
En dehors de tous les fieldsets, ajoutez :
- Un bouton Soumettre de type
submitavec la classeprimary - Un bouton Réinitialiser de type
reset - Un bouton Sauvegarder le brouillon de type
button(non fonctionnel pour cet exercice)
9. Accessibilité et conseils pratiques¶
Assurez-vous que votre formulaire respecte les critères suivants :
- Chaque
<input>,<select>, et<textarea>a un<label>associé (avecforetid) - Les champs obligatoires ont l'attribut
required - Les groupes de boutons radio ont le même attribut
name - Utilisation de
placeholderpour guider l'utilisateur - Utilisation de
autocompleteapproprié (ex:autocomplete="email"pour l'email) - Ajout d'attributs
aria-describedbypour les champs avec instructions - Structure sémantique avec
<fieldset>et<legend>
10. Validation HTML5¶
Utilisez les attributs de validation HTML5 suivants :
| Champ | Attributs de validation |
|---|---|
type="email" |
|
| Téléphone | type="tel" + pattern |
| Code postal | pattern="[0-9]{5}" |
| Date de naissance | type="date" + max="2010-01-01" |
| Mot de passe | minlength="8" + pattern |
| Année | type="number" + min + max |
11. Tests à effectuer¶
Avant de soumettre, testez votre formulaire :
- Essayez de soumettre sans remplir les champs obligatoires
- Testez la validation de l'email (entrez un email invalide)
- Testez la validation du téléphone (numéro français uniquement)
- Testez la validation du code postal (5 chiffres)
- Testez le pattern du mot de passe
- Vérifiez que les boutons radio fonctionnent (un seul sélectionnable par groupe)
- Vérifiez que les cases à cocher multiples fonctionnent
- Testez le select multiple (Ctrl+clic pour sélectionner plusieurs jours)
- Testez l'upload de fichiers (essayez un type non autorisé)
12. Livraison de l'exercice¶
Checklist avant de soumettre
- Fichier créé :
exercice-0/inscription.html - Au moins 6
<fieldset>utilisés avec<legend> - Tous les types de champs requis présents (text, email, tel, date, number, password, radio, checkbox, select, textarea, file)
- Attributs de validation HTML5 appliqués
- Tous les champs ont des
<label>associés - Les champs obligatoires ont
required - Les patterns de validation sont corrects
- Le formulaire est testé dans le navigateur
Création de la Pull Request
- Allez sur GitHub dans votre dépôt
- Cliquez sur "Compare & pull request"
- Titre de la PR :
feat(exercice-0): formulaire inscription HTML complet -
Remplissez la description de la PR :
-
Cliquez sur "Create pull request"
Captures d'écran à inclure dans votre PR
- Vue du formulaire complet (peut nécessiter plusieurs captures si long)
- Exemple de validation d'un champ obligatoire vide
- Exemple de validation d'un email invalide
- Exemple de validation d'un pattern (téléphone ou code postal)
- Formulaire rempli correctement
Pourquoi cet exercice est important ?
Maîtriser la structure HTML des formulaires est essentiel avant d'ajouter du CSS ou du JavaScript. Cet exercice vous permet de comprendre :
- Les différents types de champs et leurs attributs
- La validation côté client avec HTML5
- L'accessibilité des formulaires
- La sémantique et l'organisation logique
Dans les exercices suivants, vous ajouterez du style CSS et de l'interactivité JavaScript à vos formulaires.