Un élève écrit ce formulaire d'inscription
Exercice de TD · niveau 2 · NSI (première), chapitre 10 — Interagir sur le Web · Décrire la page : HTML et CSS
Énoncé
Un élève écrit ce formulaire d'inscription. Il compile, s'affiche, et pourtant cinq choses ne vont pas.
<form action="/inscription">
<label for="nom">Nom</label>
<input type="text" id="prenom">
<label>Courriel
<input type="email" name="courriel">
<select name="classe">
<option>1re</option>
<option>Tle</option>
<button>Envoyer</button>
</form>
Relever les cinq défauts, dire pour chacun ce que l'utilisateur constate, puis récrire le fragment correctement.
Corrigé
Les cinq défauts.
- Ligne 2--3 : le libellé ne désigne rien.
<label for="nom">pointe vers un élément d'identifiantnom, mais le champ porteid="prenom". Constat : cliquer sur le mot « Nom » ne place pas le curseur dans le champ, et un lecteur d'écran n'annonce pas le libellé. - Ligne 3 : le champ n'a pas de
name. C'est le défaut le plus grave, et le plus silencieux : la page est parfaite à l'écran, mais la valeur saisie n'est pas transmise. Lenameest le nom sous lequel la valeur voyage ; sans lui, le navigateur ignore le champ à l'envoi. - Ligne 4 : le
<label>n'est pas fermé. Le navigateur « répare » à sa façon, et le résultat dépend de lui : la mise en forme peut différer d'un navigateur à l'autre. - Ligne 6--8 : le
<select>n'est pas fermé. Le bouton se retrouve à l'intérieur de la liste déroulante. - Ligne 1 : pas de
method. En son absence, le navigateur emploie GET : les données d'inscription partiront dans l'URL, visibles dans la barre d'adresse et gardées dans l'historique. Pour une inscription, c'est POST qu'il fallait.
Le fragment corrigé.
<form action="/inscription" method="post">
<label for="nom">Nom</label>
<input type="text" id="nom" name="nom">
<label for="courriel">Courriel</label>
<input type="email" id="courriel" name="courriel">
<label for="classe">Classe</label>
<select id="classe" name="classe">
<option value="1re">1re</option>
<option value="Tle">Tle</option>
</select>
<button type="submit">Envoyer</button>
</form>
Contrôle : chaque champ a maintenant un name, donc trois valeurs partiront (nom, courriel, classe) ; chaque id est cité par un et un seul for ; toutes les balises ouvertes sont refermées.
Piège : confondre id et name. L'id sert dans la page — au CSS pour styler, au JavaScript et au <label> pour désigner. Le name sert hors de la page : c'est l'étiquette sous laquelle la valeur arrive au serveur. Un champ peut avoir l'un sans l'autre, et l'oubli du second ne se voit pas à l'écran.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.