Résumé
L'élément HTML <button> (bouton) est utilisé pour créer un contrôle interactif ayant la forme d'un bouton. S'il n'est pas désactivé, le navigateur doit permettre son activation, par exemple en cliquant dessus ou par un raccourci clavier.
- Catégories de contenu Contenu de flux, contenu phrasé, contenu interactif, listable, étiquetable, soumettable, contenu associé aux formulaires et contenu palpable.
- Contenu autorisé Contenu phrasé.
- Omission de balises Aucune, tant le tag d'ouverture que de fermeture est obligatoire
- Élément parents autorisés Tout élément acceptant du contenu phrasé.
- Interface DOM
HTMLButtonElement
Attributs
-
autofocusHTML5 - Cet attribut booléen, qui ne doit être défini qu'une fois par document, indique au navigateur que cet élément doit avoir le focus automatiquement lorsque la page est chargée. Cela permet d'utiliser immédiatement ce bouton, via un raccourci clavier par exemple, sans avoir à cliquer au préalable dans le contrôle adéquat.
-
disabled -
La présence de cet attribut booléen indique que le contrôle est désactivé, c'est-à-dire non modifiable. Il apparaît souvent en grisé dans les navigateurs et ne reçoit plus les événements de navigation comme un clic de souris ou ceux en relation avec le focus. S'il n'est pas défini, l'élément peut malgré tout hériter cet état de ses ancêtres, par exemple par élément
<fieldset>désactivé. Par défaut le bouton sera activé. -
formHTML5 -
Cet attribut contient l'attribut
idde l'élément<form>auquel celui-ci est rattaché. Par défaut, il l'est à l'élément<form>qui est son plus proche ancêtre. Cet attribut permet à un bouton d'être placé n'importe où dans le document et pas seulement comme descendant d'éléments<form>. -
formactionHTML5 -
Lorsque l'attribut
typepossède la valeursubmit, cet attribut indique l'URI à laquelle le formulaire doit être soumis si le contrôle est activé. S'il n'est pas mis, l'attribut action de l'élément<form>qui est le plus proche ancêtre de cet élément est pris en compte. En leur absence à tous les deux, l'URI sera une chaîne vide.Si cet attribut est défini, il écrasera l'attribut
actiondu formulaire rattaché au bouton. -
formenctypeHTML5 -
Lorsque l'attribut type possède la valeur
submit, cet attribut définit le type MIME qui sera utilisée pour encoder les données envoyées au serveur. C'est un attribut énuméré qui peut prendre les valeurs suivantes :application/x-www-form-urlencoded,multipart/form-data, (utilisez cet valeur si vous utilisez un<input>avec un attributtypedéfini àfile.)text/plain,
correspondant au type MIME éponyme.
Si cet attribut n'est pas défini, c'est la valeur de l'attribut
enctypede l'élément<form>qui est le plus proche ancêtre de cet élément qui est utilisé. En son absence, la valeur par défaut utilisée estapplication/x-www-form-urlencoded.Si cet attribut est défini, il écrasera l'attribut
enctypedu formulaire rattaché au bouton. -
formmethodHTML5 -
Lorsque l'attribut
typepossède la valeursubmit, cet attribut définit la méthode HTTP qui sera utilisée pour envoyer les données au serveur. C'est un attribut énuméré qui peut prendre les valeurs suivantes :GET, correspondant à la méthode GET du protocole HTTP;POST, correspondant à la méthode POST du protocole HTTP;PUT, correspondant à la méthode PUT du protocole HTTP;DELETE, correspondant à la méthode DELETE du protocole HTTP.
Si cet attribut n'est pas défini, c'est la valeur de l'attribut
methodde l'élément<form>qui est le plus proche ancêtre de cet élément qui est utilisé. En son absence, la valeur par défaut utilisée estGET.Si cet attribut est défini, il écrasera l'attribut
methoddu formulaire rattaché au bouton. -
formnovalidateHTML5 -
Lorsque l'attribut
typepossède la valeursubmit, cet attribut booléen indique si le formulaire doit être validé au moment de sa soumission. S'il n'est pas mis, l'attributnovalidatede l'élément<form>qui est le plus proche ancêtre de cet élément est pris en compte. En leur absence à tous les deux, le formulaire sera validé.Si cet attribut est défini, il écrasera l'attribut
novalidatedu formulaire rattaché au bouton. -
formtargetHTML5 -
Lorsque l'attribut
typepossède la valeursubmit, cet attribut indique le contexte de navigation (onglet, fenêtre, frame) associé avec le formulaire, sa cible. Outre un attributidvalide du document, il peut prendre l'une de ces valeurs particulières:_selfoù la cible sera le contexte actuel;_parentoù la cible sera le contexte hiérarchiquement au-dessus du contexte actuel (où le contexte actuel, s'il n'y en a pas);_topoù la cible sera le contexte hiérarchiquement le plus au-dessus du contexte actuel (typiquement l'onglet courant);_blankoù la cible sera un nouveau contexte proche, c'est-à-dire facilement atteignable, du contexte actuel (un nouvel onglet ou une nouvelle fenêtre par exemple).
S'il n'est pas mis, l'attribut
targetde l'élément<form>qui est le plus proche ancêtre de cet élément est pris en compte. En leur absence à tous les deux, la cible sera déterminée par l'attributtargetdu premier élément<base>descendant de l'élément<head>du document. S'il n'y en a pas, la cible sera la chaîne vide.Si cet attribut est défini, il écrasera l'attribut
targetdu formulaire rattaché au bouton. -
name - Le nom du contrôle, qui sera soumis avec les données du formulaire.
-
type -
Le type du bouton. Le type par défaut si cet attribut énuméré n'est pas spécifié est
submit. Les valeurs, et les actions associées, possibles sont :submit: l'activation du bouton entraîne la soumission du formulaire au serveur distant (après validation des contraintes du formulaire);reset: l'activation du bouton entraîne la réinitialisation du formulaire et dans ce cas-là, l'élément est exclu de la validation des contraintes;button: l'activation du bouton n'entraîne aucun action automatique et dans ce cas-là également, l'élément est exclu de la validation des contraintes.
Si l'attribut
disabledest activé, aucune action n'a lieu. -
value - Cet attribut contient la valeur de ce bouton en rapport avec la soumission du formulaire; il n'est ajouté aux données envoyées au serveur que si le bouton a été utilisée pour initier l'envoi.
Exemple
<button name="button">Click me</button>
Notez que des styles CSS ont été appliqués à ce bouton.
Spécifications
| Spécification | Statut | Commentaire |
|---|---|---|
| WHATWG HTML Living Standard La définition de '<button>' dans cette spécification. |
Living Standard | |
| HTML5 La définition de '<button>' dans cette spécification. |
Candidate Recommendation | |
| HTML 4.01 Specification La définition de '<button>' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
| Fonction | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Support de base | 1.0 | 1.0 (1.7 ou moins) | (Oui) | (Oui) | (Oui) |
Attribut formaction |
9.0 | 4.0 (2.0) | 10 | ? | ? |
Attribut formenctype |
9.0 | 4.0 (2.0) | 10 | 10.6 | ? |
Attribut formmethod |
9.0 | 4.0 (2.0) | 10 | ? | ? |
Attribut autofocus |
5.0 | 4.0 (2.0) | 10 | 9.6 | 5.0 |
| Fonction | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Support de base | (Oui) | 1.0 (1.0) | (Oui) | (Oui) | (Oui) |
Attribut formaction |
? | 4.0 (2.0) | ? | ? | ? |
Attribut formenctype |
? | 4.0 (2.0) | ? | ? | ? |
Attribut formmethod |
? | 4.0 (2.0) | ? | ? | ? |
Le clic et le focus
La réception du focus (par défaut) suite à un clic sur un élément <button> varie selon le navigateur et le système d'exploitation.
| Navigateurs pour ordinateurs | Windows 8.1 | OS X 10.9 |
|---|---|---|
| Firefox 30.0 | Oui | Non (même avec tabindex) |
| Chrome 35 | Oui | Oui |
| Safari 7.0.5 | N/A | Non (même avec tabindex) |
| Internet Explorer 11 | Oui | N/A |
| Navigateurs mobiles | iOS 7.1.2 | Android 4.4.4 |
|---|---|---|
| Safari Mobile | Non (même avec tabindex) |
N/A |
| Chrome 35 | ??? | Oui |
Notes
Les éléments <button> sont beaucoup plus facile à styler que les éléments <input>. Vous pouvez y ajouter du contenu HTML (pensez à <strong>, <em> ou encore à <img>) et utilisez les pseudo-éléments :after et :before pour réaliser un rendu encore plus complexe. Alors que l'élément <input> n'accepte qu'un attribut textuel.
IE7 a un bug quand vous soumettez un formulaire avec <button type="submit" name="monBouton" value="foo">Cliquez-moi</button>, la donnée POST envoyée sera in monBouton=Cliquez-moi au lieu de monBouton=foo. IE6 a une version bien plus horrible du bug, où la soumission du formulaire par un bouton, soumettra TOUS les boutons du formulaire, avec le même bug que IE7. Ce bug a été résolu avec IE8.
Firefox rajoutera, pour des questions d'accessibilité, une fine bordure pointillée autours du bouton avec le focus. Cette bordure est déclarée en CSS, dans la feuille du style du navigateur. Mais vous pouvez la surcharger si nécessaire pour ajouter votre propre style de focus en utilisant button::-moz-focus-inner { }