Ces types de zones sont soit une spécialisation de l'élément input soit une utilisation de l'élément button.
Quelque soit l'élément qui servira à créer un bouton, l'attribut type
définira quelle action exécute le bouton :
Dans la suite, nous présenterons en détail les boutons fait avec l'élément input car pour des raisons historiques (bugs dans les navigateurs) c'est celui qui était le plus utilisé. Les informations données s'appliquent généralement de la même façon aux boutons fait avec l'élément button. La différence entre les 2 éléments tient avant tout à la structure HTML de leur composition.
Parmi ces sortes de bouton, le bouton de soumission est de loin le plus important et incontournable dans un formulaire.
Dans une page uniquement en HTML, la présence d'au moins un bouton de soumission dans un formulaire est indispensable pour que les informations saisies puissent être envoyées au serveur.
Il est possibe d'inclure dans le code HTML du code JavaScript
qui donnera accès aux éléments du formulaire, permettra de faire
des validations et corrections, et d'envoyer les informations sans
qu'il y ait besoin de bouton de soumission.
La technique AJAX
est une dérivation de cette possibilité. Elle permet en utilisant
JavaScript d'envoyer des informations au serveur, d'attendre le
retour fait par celui-ci, puis d'afficher ce retour dans une partie
de la page Web sans que l'utilisateur ne change de page comme c'est
le cas avec la soumission classique d'un formulaire.
Un bouton de soumission est fait avec l'élément input
dont l'attribut type a la valeur submit.
L'élément input
est un élement vide (ie sans balise de fermeture).
| Attribut possible | Utilité |
autofocus |
Activé à l'affichage de la page. |
dirname |
Direction du texte saisi. |
disabled |
Zone désactivée, non transmise au serveur. Aucune interaction n'est possible avec la zone (pas de focus, pas de copie, etc). Attribut booléen. |
form |
id du formulaire associé si la zone n'est
pas un élément form ou concerne un autre formulaire
que celui dans lequel elle est imbriquée. |
formaction |
URL à
laquelle le formulaire doit être soumis. Si cet attribut n'est
pas présent (c'est généralement le cas), l'attribut
action de l'élément form
conteneur du bouton est pris en compte. |
formenctype |
Définit le type
MIME qui sera utilisée pour encoder les données envoyées au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
enctype de l'élément form
conteneur du bouton est pris en compte.
|
formmethod |
Définit la méthode utilisée pour envoyer les données au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
method de l'élément form
conteneur du bouton est pris en compte.
|
formnovalidate |
Attribut booléen qui indique si le formulaire doit être
validé au moment de sa soumission. Si cet attribut n'est pas
présent (c'est généralement le cas), l'attribut formnovalidate
de l'élément form conteneur du bouton est pris en
compte.
|
name |
Nom de la zone. |
readonly |
Zone en lecture seule, transmise au serveur. La zone peut avoir le focus et le contenu peut être copié. Attribut booléen. |
value |
Libellé du bouton. Transmise au serveur. |
L'attribut value permet de donner le
libellé qui apparaitra sur le bouton.
Si cet attribut n'a pas de valeur (ie une chaîne vide), le bouton
apparaitra mais sans libellé.
Si cet attribut n'est pas présent, le navigateur mettra un libellé
par défaut (dépendant de chaque navigateur).
Cet élément est représenté par défaut sous la forme d'un bouton tel que ceux de l'interface du système d'exploitation utilisé.
Quand on clique sur ce bouton on déclenche l'envoi du contenu du formulaire au serveur (on parle aussi de "soumission de formulaire"). C'est le navigateur qui prend automatiquement en charge la collecte des informations saisies, leur mise en forme pour échange avec le serveur et leur transfert sur le réseau.
Si on veut changer l'apparence du bouton de soumission (ou des autres types de boutons), il faut utiliser des propriétés de style CSS comme dans l'exemple suivant.
Dans certaines pages (ou applications), on peut avoir plusieurs
boutons de soumission qui enverront tous vers le même "programme"
sur le serveur, mais qui en fonction de leur nom
(attribut name) déclencheront des traitement
différents.
Le cas typique est une gestion de fiche dans une base de données ou
aura par exemple un bouton de soumission qui va déclencher un
traitement de mise à jour de la fiche (ie une requête SQL UPDATE), et un autre
bouton de soumission qui lui va déclencher un traitement de
suppression de la fiche (ie une requête SQL DELETE).
Un bouton de réinitialisation est fait avec
l'élément input
dont l'attribut type a la valeur reset.
L'élément input
est un élement vide (ie sans balise de fermeture).
Un bouton de réinitialisation n'est pas vraiment un bouton
d'effacement des zones du formulaires. Il remet
les zones dans l'état où elles étaient avant que l'utilisateur ne
les modifie. Bien sûr, si les zones étaient vides on aura
l'impression que l'action du bouton a été d'effacer leur contenu,
mais ce n'est pas ce qui est fait en réalité.
Vous pouvez constater dans l'exemple précédent que seule la zone
"Prénom" a été "effacée" car sa valeur initiale était une chaîne
vide.
Cet élément est représenté par défaut sous la forme d'un bouton tel
que ceux de l'interface du système d'exploitation utilisé.
Si on veut changer l'apparence du bouton, il faut utiliser des
propriétés de style CSS.
L'attribut value permet de donner le
libellé qui apparaitra sur le bouton.
Si cet attribut n'a pas de valeur (ie une chaîne vide), le bouton
apparaitra mais sans libellé.
Si cet attribut n'est pas présent, le navigateur mettra un libellé
par défaut (dépendant de chaque navigateur).
La zone n'a pas besoin d'être nommée avec un attribut name
car aucun couple nom / valeur la représentant ne sera envoyé au
serveur lors de la soumission du formulaire.
| Attribut possible | Utilité |
autofocus |
Activé à l'affichage de la page. |
dirname |
Direction du texte saisi. |
disabled |
Zone désactivée, non transmise au serveur. Aucune interaction n'est possible avec la zone (pas de focus, pas de copie, etc). Attribut booléen. |
form |
id du formulaire associé si la zone n'est
pas un élément form ou concerne un autre formulaire
que celui dans lequel elle est imbriquée. |
name |
Nom de la zone. |
readonly |
Zone en lecture seule, transmise au serveur. La zone peut avoir le focus et le contenu peut être copié. Attribut booléen. |
value |
Libellé du bouton. Non transmis au serveur. |
Un bouton script est fait avec l'élément input
dont l'attribut type a la valeur button.
L'élément input
est un élement vide (ie sans balise de fermeture).
Cet élément est prévu pour exécuter du code JavaScript lorsqu'il
est cliqué.
Si l'événement de cliquer sur le bouton n'est pas rattaché à du
code JavaScript, rien ne se passera (cas du 1er bouton de l'exemple
précédent).
L'événement clique du 2eme bouton est lui rattaché à du code
JavaScript : la fonction faireAction() va changer le
contenu du tag H3 de la page.
Cet élément est représenté par défaut sous la forme d'un bouton tel
que ceux de l'interface du système d'exploitation utilisé.
Si on veut changer l'apparence du bouton, il faut utiliser des
propriétés de style CSS.
L'attribut value permet de donner le
libellé qui apparaitra sur le bouton.
Si cet attribut n'a pas de valeur (ie une chaîne vide) ou s'il
n'est pas présent, le bouton apparaitra mais sans libellé.
La zone n'a pas besoin d'être nommée avec un attribut name
car aucun couple nom / valeur la représentant ne sera envoyé au
serveur lors de la soumission du formulaire.
| Attribut possible | Utilité |
autofocus |
Activé à l'affichage de la page. |
dirname |
Direction du texte saisi. |
disabled |
Zone désactivée, non transmise au serveur. Aucune interaction n'est possible avec la zone (pas de focus, pas de copie, etc). Attribut booléen. |
form |
id du formulaire associé si la zone n'est
pas un élément form ou concerne un autre formulaire
que celui dans lequel elle est imbriquée. |
name |
Nom de la zone. |
readonly |
Zone en lecture seule, transmise au serveur. La zone peut avoir le focus et le contenu peut être copié. Attribut booléen. |
value |
Libellé du bouton. Non transmis au serveur. |
Un bouton image est fait avec l'élément input
dont l'attribut type a la valeur image.
L'élément input
est un élement vide (ie sans balise de fermeture).
Un bouton image est en réalité un bout de soumission, avec les différences suivantes :
value
s'il est présent sera ignoré)
name)
Dans les faits, ce type de bouton est très peu utilisé. Au début du Web, il était concevable d'avoir un élément de ce type pour améliorer graphiquement les formulaires. Actuellement, avec les possibilités des feuilles de style CSS il est devenu obsolète, d'autant plus que rien n'est transmis au serveur le concernant.
| Nom | Utilité |
alt |
Alternative textuelle à l'image. |
autofocus |
Activé à l'affichage de la page. |
dirname |
Direction du texte saisi ou affiché. |
disabled |
Zone désactivée, non transmise au serveur. Aucune interaction n'est possible avec la zone (pas de focus, pas de copie, etc). Attribut booléen. |
form |
id du formulaire associé si la zone n'est
pas un élément form ou concerne un autre formulaire
que celui dans lequel elle est imbriquée. |
formaction |
URL à
laquelle le formulaire doit être soumis. Si cet attribut n'est
pas présent (c'est généralement le cas), l'attribut
action de l'élément form
conteneur du bouton est pris en compte. |
formenctype |
Définit le type
MIME qui sera utilisée pour encoder les données envoyées au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
enctype de l'élément form
conteneur du bouton est pris en compte.
|
formmethod |
Définit la méthode utilisée pour envoyer les données au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
method de l'élément form
conteneur du bouton est pris en compte.
|
formnovalidate |
Attribut booléen qui indique si le formulaire doit être
validé au moment de sa soumission. Si cet attribut n'est pas
présent (c'est généralement le cas), l'attribut formnovalidate
de l'élément form conteneur du bouton est pris en
compte.
|
height |
Hauteur de l'image. |
name |
Nom de la zone. |
readonly |
Zone en lecture seule, transmise au serveur. La zone peut avoir le focus et le contenu peut être copié. Attribut booléen. |
src |
URL de l'image. |
width |
Largeur de l'image. |
Complétez le code HTML pour obtenir le résultat ci-contre.
La feuille de style liée à l'exercice (form05.css)
fera automatiquement la mise en forme des éléments fieldset
et legend
Le formulaire utilise la méthode POST pour envoyer les
informations saisies à noter.php.
Les zones du formulaire s'appellent respectivement txtNom,
nbrNote, btnNoter, btnInit
et btnAbsent.
txtNom est obligatoire, fait 40 de long et a
un texte d'aide.nbrNote varie de 0 à 20 avec un incrément de
1. La valeur par défaut est 10.btnNoter est un bouton de soumission.btnInit est un bouton de réinitialisation.btnAbsent est un bouton qui déclenche
l'exécution de la fonction JavaScript ilEstAbsent.
La principale différence entre les boutons faits avec l'élément input
ou avec l'élément button
tient dans la structure HTML
utilisée pour réaliser l'un ou l'autre : l'élément
button
peut contenir du texte et d'autres éléments
.
Les éléments qui peuvent être contenus sont des éléments de "contenu phrasé" (essentiellement
des éléments de texte, des éléments embarqués et des éléments de
formulaire), à l'exclusion de tout élément interactif.
C'est l'attribut type qui définit l'action réalisée
par le bouton :
type="submit" crée un bouton d'envoi du
formulaire au serveur (soumission),type="reset" crée un bouton de
réinitialisation des zones du formulaire,type="button" crée un bouton d'exécution de
code JavaScript.
Si l'attribut type n'est pas défini, la valeur par
défaut sera submit.
Pour les boutons de type submit il est important de
bien préciser le nom du bouton (attribut name) et la
valeur associée (attribut value). C'est le couple qui
sera envoyé au serveur Web et qui permettra au "programme"
récupèrant les informations saisies dans le formulaire de définir
le traitement qu'il a à faire.
| Attribut possible | Utilité |
autofocus |
Activé à l'affichage de la page. |
disabled |
Zone désactivée, non transmise au serveur. Aucune interaction n'est possible avec la zone (pas de focus, pas de copie, etc). Attribut booléen. |
form |
id du formulaire associé si la zone n'est
pas un élément form ou concerne un autre formulaire
que celui dans lequel elle est imbriquée. |
formaction |
URL à
laquelle le formulaire doit être soumis. Si cet attribut n'est
pas présent (c'est généralement le cas), l'attribut
action de l'élément form
conteneur du bouton est pris en compte. |
formenctype |
Définit le type
MIME qui sera utilisée pour encoder les données envoyées au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
enctype de l'élément form
conteneur du bouton est pris en compte.
|
formmethod |
Définit la méthode utilisée pour envoyer les données au
serveur. Si cet attribut n'est pas présent (c'est généralement le
cas), l'attribut
method de l'élément form
conteneur du bouton est pris en compte.
|
formnovalidate |
Attribut booléen qui indique si le formulaire doit être
validé au moment de sa soumission. Si cet attribut n'est pas
présent (c'est généralement le cas), l'attribut formnovalidate
de l'élément form conteneur du bouton est pris en
compte.
|
name |
Nom de la zone. |
type |
Définit quelle action est exécutée par le bouton : submit
pour la soumission du formulaire, reset pour la
réinitialisation des zones du formulaire, button
pour l'exécution de code JavaScript.
|
value |
Libellé du bouton. Transmise au serveur. |
Complétez le code HTML pour obtenir le résultat ci-contre.
La feuille de style liée à l'exercice (form05.css)
fera automatiquement la mise en forme des éléments fieldset
et legend
Le formulaire utilise la méthode POST pour envoyer les
informations saisies à hacker.php.
La zone de saisie s'appelle urlSite, elle est
obligatoire et affiche un texte d'aide.
Tous les boutons soumettent le formulaire, mais à des URLs différentes. Ils
contiennent tous 2 images. L'image principale s'appelle pirate.png,
fait 80 pixels sur 70 et se trouve (comme toutes les autres images)
dans le dossier images du dossier exemples.
Les boutons ont les caractèristiques suivantes :
| Nom | Valeur | Url soumission | 2ème image | Dimensions |
btnHaut |
haut | haut.php |
ciseaux.png |
29 X 30 |
btnBas |
bas | bas.php |
scie.png |
30 X 30 |
btnGauche |
gauche | gauche.php |
marteau.png |
30 X 30 |
btnDroite |
droite | droite.php |
bug.png |
29 X 30 |