version 1.10, dernière mise à jour le 18 juillet 2005.
Dans les premiers temps du Web, l'information ne circulait quasiment que dans un seul sens : du serveur vers l'internaute.
Il n'existait alors aucun retour de l'utilisateur vers le serveur : l'arrivée des formulaires a comblé cette lacune. Un formulaire
doit recueillir des informations de l'utilisateur, puis les transférer au serveur, qui à son tour doit les traiter. Or le
traitement de cette information sur le serveur est effectué par des scripts (comprendre "petit programme généralement interprété") écrits en langage C
, Perl
ou ASP
. Nous sortons ici du cadre de notre cours HTML
statique : nous ne traiterons pas ici le côté traitement-serveur, cette partie est prévue plus tard dans l'année.
Un formulaire débute par la balise <form>
(et finit donc par </form>
). Ce conteneur contient toutes les autres balises du formulaire. Il peut contenir aussi d'autres balises : <p>
, <table>
, etc., permettant la présentation du formulaire.
Elle est destinée, essentiellement, à préciser où envoyer les données recueillies par le formulaire. Elle permet aussi d'indiquer au serveur la forme sous laquelle ces données lui seront transmises (mode de codification).
Attributs |
Effet |
Valeur(s) |
---|---|---|
|
URL du script |
URL, 2 types possibles :
|
|
Indique sous quelle forme vont être codées les informations envoyées. |
|
|
Précise la méthode MIME de codification de l'envoi. Permet au serveur d'anticiper sur l'objet à recevoir et de prévoir le protocole d'échange (Pour plus de détails). |
|
|
Précise la méthode MIME de codification de l'envoi pour un fichier. Permet au serveur d'anticiper sur le fichier à recevoir et de prévoir le protocole d'échange (Pour plus de détails). |
Chaîne de caractères donnant un code MIME reconnu. |
|
Le code à exécuter lors de la soumission. |
Chaîne de caractères renvoyant vers une fonction script de traitement (par exemple une fonction JavaScript). |
|
Le code à exécuter lors de la remise à zéro du formulaire. |
Chaîne de caractères renvoyant vers une fonction script de traitement (par exemple une fonction JavaScript). |
|
Le nom du formulaire. |
Une chaîne de caractères. |
|
Les codages de caractèrs acceptés dans les zones de texte. |
Une liste de codage de caractères, séparée par des espaces. |
|
Spécifie la cible du retour après traitement du serveur (voir le chapitre sur les cadres). |
Une liste de codage de caractères, séparée par des espaces. |
Table 1. Attributs de la balise <form>
.
Exemple pour un formulaire d'envoi de courrier électronique sur le serveur de Multimania : <form method="get" action="/cgi-bin/mailer">.
Exemple pour un formulaire classique sans l'aide de script CGI
: <forum action="mailto:webmaster@allhtml.com" method="post" enctype="text/plain">
.
Cette balise sert à spécifier comment s'effectue la saisie du formulaire : par cases à cocher, boutons radio, texte libre,
etc. Tous ces éléments de saisie sont décrits à l'aide d'une seule balise : la balise <input>
. C'est son attribut type
qui permet de préciser s'il s'agit de cases à cocher, boutons radio, texte libre...
L'attribut type
peut prendre les valeurs suivantes :
text
password
chekbox
radio
submit
reset
image
button
hidden
file
Cette balise possède de nombreux attributs ; certains n'ont une signification que pour un type
donné de champ. Ce paragraphe présente une liste des attributs d'usage général.
Attributs |
Effet |
Valeur(s) |
---|---|---|
|
Le nom du champ. |
Une chaîne de caractères. |
|
Une courte description. |
Une chaîne de caractères. |
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
|
Définit une touche du clavier permettant d'accéder au champ de formulaire. La combinaison "ALT+touche" a le même effet que l'activation du champ. |
Touche du clavier |
|
Fixe la position de l'élément dans l'ordre séquentiel des tabulations. |
Valeur numérique entière |
|
Un script à exécuter quand le curseur est positionné sur le champ ( |
Une chaîne de caractères. |
|
Un script à exécuter quand contenu du champ a été changé. |
Une chaîne de caractères. |
Table 2. Attributs généraux de la balise <input>
.
L'attribut type
vaut type="text"
. La balise permet alors à l'utilisateur de saisir une ligne de texte. Les attributs utiles pour ce type sont :
size
: un nombre entier, qui définit la taille visible du champ en nombre de caractères.
maxlength
: un nombre entier, qui définit le nombre maximum de caractères autorisés.
value
: une chaîne de caractères, qui permet d'afficher un texte par défaut dans la zone de saisie.
readonly
: un booléen. La modification du contenu n'est pas permise.
L'attribut name
est obligatoire pour ce type de champ.
L'attribut type
vaut type="checkbox"
. Les attributs utiles pour ce type sont :
value
: une chaîne de caractères, obligatoire, valeur passée au serveur (couple nom="valeur"
) (a plus de sens dans le cas radio
suivant).
checked
: un booléen (s'utilise sous la forme checked="checked"
). S'il est activée, la case est cochée par défaut.
L'attribut type
vaut type="radio"
. Outre la présentation (les cases sont rondes et non plus carrées), il existe une grande différence entre les cases à cocher
et les boutons radio : les boutons radio qui portent le même name
s'excluent mutuellement, le cochage de l'un décoche les autres. Les attributs utiles pour ce type sont :
value
: une chaîne de caractères, obligatoire, valeur passée au serveur (couple nom="valeur"
).
checked
: un booléen (s'utilise sous la forme checked="checked"
). S'il est activée, la case est cochée par défaut.
L'attribut type
vaut type="file"
. Il s'agit de donner la possibilité à l'utilisateur du formulaire de joindre un fichier à son envoi. L'attribut utile pour
ce type est value
, une chaîne de caractères, qui indique le lom du fichier à attacher par défaut.
L'attribut type
vaut type="hidden"
. Pourquoi cacher des données ? Il s'agit plutôt de faciliter le traitement des données recueillies par le serveur en fournissant
le nom du formulaire, l'URL du formulaire, et d'autres indices inutiles à l'utilisateur mais très utiles au classement des
données. Ces données deviennent obligatoires lorsque vous faîtes héberger vos pages Web. Les attributs utiles pour ce type
sont :
value
: une chaîne de caractères. Valeur cachée à envoyer au serveur, obligatoire.
Par exemple, avec le script CGI chargé de la gestion de l'envoi de courrier électronique sur Multimania :
<input type="hidden" name="TO" value="login@multimania.com">
: cette valeur indique sur quelle adresse électronique le formulaire sera envoyé.
<input type="hidden" name="FROM" value="login@multimania.com">
: cette valeur indique la provenance du formulaire.
<input type="hidden" name="SUBJECT" value="FORMULAIRE">
: Cette valeur indique le nom du formulaire (le sujet du courrier), utile si vous avez plusieurs formulaires, cela permet
de trier son courrier.
<input type="hidden" name="GOTOURL" value="http://www.multimania.com/login/reponse.html">
: cette valeur indique l'URL complète de la page HTML
à afficher après l'envoi du formulaire.
L'attribut type
vaut type="password"
. A l'identique que le type text
, mais les caractères tapés sont affichés sous forme d'astérisques. Mais attention : le mot de passe est envoyé en clair dans le message final. Aucune méthode de chiffrement n'est appliquée : la confidentialité ne se limite qu'à l'instant de la saisie. Les attributs utiles pour ce type sont les mêmes que ceux
du type text
:
size
: un nombre entier, qui définit la taille visible du champ en nombre de caractères.
maxlength
: un nombre entier, qui définit le nombre maximum de caractères autorisés.
value
: une chaîne de caractères, qui permet d'afficher un texte par défaut dans la zone de saisie.
L'attribut type
vaut type="submit"
. Les attributs utiles pour ce type sont :
value
: une chaîne de caractères. Légende du bouton, par défaut Submit
.
Une variante est possible en utilisant le type image
: type="image"
. Le bouton d'envoi est alors... une image. Les attributs utiles pour ce type sont :
src
: une chaîne de caractères. URL de l'image à utiliser.
L'attribut type
vaut type="reset"
. Il s'agit d'un bouton qui, cliqué, remet à leurs valeurs par défaut l'ensemble des champs du formulaire. L'attribut utile
pour ce type est value
, une chaîne de caractères qui indique la légende du bouton, valant par défaut Reset
.
Elle permet aux utilisateurs de votre site de laisser un commentaire ou de taper un texte quelconque.
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Nom de l'élément. |
Une chaîne de caractères. |
|
Nombre de lignes et de colonnes de la zone de texte. Ces attributs sont obligatoires. |
Un nombre entier. |
|
La modification du contenu n'est pas permise. |
Un booléen. |
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
|
Définit une touche du clavier. La combinaison "ALT + touche" a le même effet que l'activation du champ. |
Touche du clavier |
|
Fixe la position de l'élément dans l'ordre séquentiel des tabulations. |
Valeur numérique entière |
|
Un script à exécuter quand le curseur est positionné sur le champ ( |
Une chaîne de caractères. |
|
Un script à exécuter quand contenu du champ a été changé. |
Une chaîne de caractères. |
Table 3. Attributs de la balise <textarea>
.
Remarque : le texte se trouvant à l'intérieur des balises <textarea>
et </textarea>
sera le texte par défaut.
Il s'agit d'une liste de propositions ou d'options parmi lesquelles l'utilisateur doit opérer un choix. Ce choix peut être
unique ou multiple. Les options possibles sont décrites pour chacunes d'entre-elles dans un conteneur <option>
( la balise fermante </option>
est obligatoire). Il y a autant de balises <option>
que d'options.
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Nom de l'élément. |
Une chaîne de caractères. |
|
Le nombre d'options accessibles. |
Un nombre. |
|
Permet à plusieurs options d'être simultanément sélectionnées. |
Un booléen. Par défaut, une seule option peut être sélectionnée. |
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
|
Fixe la position de l'élément dans l'ordre séquentiel des tabulations. |
Valeur numérique entière |
|
Un script à exécuter quand le curseur est positionné sur le champ ( |
Une chaîne de caractères. |
|
Un script à exécuter quand contenu du champ a été changé. |
Une chaîne de caractères. |
Table 4. Attributs de la balise <select>
.
La balise <select>
admet deux balises-enfants... <optgroup>
permet de rassembler des éléments <option>
.
Chaque "option" est une possibilité de choix dans le menu select
. Cette balise possède les attributs suivants :
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Ce qui apparaît dans la liste d'options du menu. Si cet attribut n'est pas présent, c'est le contenu de l'élément |
Une chaîne de caractères. |
|
Spécifie l'option sélectionnée par défaut. |
Un booléen. |
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
|
Une étiquette désignant l'option choisie dans le menu. |
Une chaîne de caractères. |
Table 5. Attributs de la balise <option>
.
Cette balise permet de rassembler en catégories les éléments <option>
, pour les faire apparaître de manière ordonnée dans le menu.
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Une étiquette désignant le groupe d'options choisies dans le menu. |
Une chaîne de caractères. |
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
Table 6. Attributs de la balise <optgroup>
.
Les balises présentées dans cette partie sont très peu utilisées. Nous allons nous limiter aux balises <label>
et surtout <button>
, mais il existe aussi <fieldset>
et <legend>
.
Cette balise permet d'associer à un élément de formulaire des informations relatives à son contenu ; cette information est utile notamment pour les navigateurs destinés aux mal-voyants.
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Renvoie à l'élément de formulaire spécifié par le même attribut |
Une chaîne de caractères. |
|
Définit une touche du clavier. La combinaison "ALT + touche" a le même effet que l'activation du champ. |
Touche du clavier |
|
Un script à exécuter quand le curseur est positionné sur le champ ( |
Une chaîne de caractères. |
Table 7. Attributs de la balise <label>
.
L'exemple suivant donne plusieurs possibilités d'utilisation de cet élément...
<table summary="">
<tr>
<td><label for="user" accesskey="u">utilisateur</label></td>
<td>
<select name="user" id="user">
<option>Jean</option>
<option>Paul</option>
<option>Jacques</option>
</select>
</td>
</tr>
<tr>
<td><label for="passwd" accesskey="p">mot de passe</label></td>
<td><input type="password" id="passwd" passwd=""></input></td>
</tr>
</table>
<p><label accesskey="s">Sauver le nom d'utilisateur et le mot de passe dans un cookie?</label><input type="checkbox" name="save" value="oui"></input>
</p>
<p><label for="comments" accesskey="c">Commentaires?</label><textarea name="comments" id="comments" rows="8" cols="50"></textarea>
</p>
Cet élément permet d'insérer un bouton dans un formulaire. Cela est également possible avec la balise <input>
, mais <button>
permet un plus large choix d'options. Il est malheureusement moins bien accepté par les "vieux" navigateurs.
Attribut |
Effet |
Valeur(s) |
---|---|---|
|
Le nom du bouton. |
Une chaîne de caractères. |
|
Valeur envoyée au serveur. |
Une chaîne de caractères. |
|
Type de bouton. |
|
|
Désactive l'élément, qui apparaît dès lors en grisé. |
Un booléen. |
|
Fixe la position de l'élément dans l'ordre séquentiel des tabulations. |
Valeur numérique entière |
|
Définit un raccourci clavier. La combinaison "ALT + touche" a le même effet que l'activation du champ. |
Touche du clavier |
|
Un script à exécuter quand le curseur est positionné sur le champ ( |
Une chaîne de caractères. |
Table 8. Attributs de la balise <optgroup>
.
Voici quelques exemples d'utilisation de la balise...
<button name="soumet" value="modifier">Modifier l'information</button>
<button name="continue" value="continuer">Continuer l'application</button>
<button><img src="checkmark.gif" alt="✔"></img>Sauvegarder</button>
<button type="reset"><img src="x.gif" alt="✘"></img>Remettre à zéro</button>
<button type="button" id="toggler" onclick="toggle()">Cacher les attributs<em>non stricts</em>.</button>
Cette création est mise à disposition par Gilles Chagnon sous un contrat Creative Commons.