L'élément HTML <button> est utilisé afin de créer un contrôle interactif ayant la forme d'un bouton.
| Catégories de contenu | Contenu de flux, contenu phrasé, contenu interactif, listable, étiquetable, soumettable, contenu associé aux formulaires et contenu tangible. |
|---|---|
| Contenu autorisé | Contenu phrasé. |
| Omission de balises | Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires |
| Parents autorisés | Tout élément acceptant du contenu phrasé. |
| Rôles ARIA autorisés | checkbox, link, menuitem, menuitemcheckbox, menuitemradio, radio, switch, tab. |
| Interface DOM | HTMLButtonElement |
| Type d'élément | En ligne |
Attributs
Cet élément peut utiliser les attributs universels.
autofocusHTML5- Cet attribut booléen, qui ne doit être défini qu'une fois par document, indique au navigateur que cet élément doit automatiquement avoir le focus 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.
autocomplete- Pour l'élément
<button>, cet attribut, propre à Firefox, n'est pas standard. Par défaut et à la différence des autres navigateurs, Firefox conserve l'état de désactivation d'un bouton d'un élément<button>au fur et à mesure des chargements d'une page. Utiliser cet attribut avec la valeuroff(i.e.autocomplete="off") désactive cette fonctionnalité (cf. bug 654072 pour plus d'informations). 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 (par exemple 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 si élément
<fieldset>désactivé. Par défaut le bouton sera activé. - À la différence des autres navigateurs, Firefox conservera par défaut l'état de désactivation d'un bouton même après un rechargement. Pour contrôler ce comportement, on utilisera l'attribut
autocompleteprésenté ci-avant. formHTML5- Cet attribut contient l'attribut
idde l'élément<form>auquel celui-ci est rattaché. Par défaut, le bouton est rattaché à 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 un descendant d'éléments<form>. formactionHTML5-
Cet attribut indique l'URI à laquelle le formulaire doit être soumis si le contrôle est activé. Si l'attribut n'est pas indiqué, l'attribut
actionde l'élément<form>étant le plus proche ancêtre de cet élément est pris en compte. Si les deux sont absents, l'URI sera une chaîne vide. Si cet attribut est défini, il écrasera l'attributactiondu formulaire rattaché au bouton. formenctypeHTML5- Lorsque l'attribut
typepossède la valeursubmit, cet attribut définit le type MIME qui sera utilisée pour encoder les données envoyées au serveur. C'est un attribut à valeur contrainte qui peut prendre les valeurs suivantes :application/x-www-form-urlencoded: la valeur par défaut.multipart/form-data, (utilisez cet valeur si vous utilisez un<input>avec un attributtypedéfini àfile.)text/plain
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é. Si cet attribut est défini, il écrasera l'attributenctypedu 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 à valeur contrainte 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'attributmethoddu 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.menu: le bouton ouvre un menu (correspondant à l'élément<menu>associé).
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.
Exemples
HTML
<button>Cliquez sur moi :)</button>
Résultat
Spécifications
| Spécification | État | Commentaires |
|---|---|---|
| HTML Living Standard La définition de '<button>' dans cette spécification. |
Standard évolutif | |
| HTML5 La définition de '<button>' dans cette spécification. |
Recommendation | |
| HTML 4.01 Specification La définition de '<button>' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
| Fonctionnalité | Chrome | Firefox (Gecko) | Edge | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Support simple | 1.0 | 1.0 (1.7 ou moins) | (Oui) | (Oui) | (Oui) | (Oui) |
attribut formaction |
9.0 | 4.0 (2.0) | (Oui) | 10 | ? | ? |
attribut formenctype |
9.0 | 4.0 (2.0) | (Oui) | 10 | 10.6 | ? |
attribut formmethod |
9.0 | 4.0 (2.0) | (Oui) | 10 | ? | ? |
attribut autofocus |
5.0 | 4.0 (2.0) | (Oui) | 10 | 9.6 | 5.0 |
Valeur menu pour l'attribut type |
Pas de support | Pas de support[1] | Pas de support | Pas de support | Pas de support | ? |
| Fonctionnalité | Android | Firefox Mobile (Gecko) | Edge | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Support simple | (Oui) | 1.0 (1.0) | (Oui) | (Oui) | (Oui) | (Oui) |
attribut formaction |
? | 4.0 (2.0) | (Oui) | ? | ? | ? |
attribut formenctype |
? | 4.0 (2.0) | (Oui) | ? | ? | ? |
attribut formmethod |
? | 4.0 (2.0) | (Oui) | ? | ? | ? |
Valeur menu pour l'attribut type |
? | ? | Pas de support | ? | ? | ? |
[1] À l'heure actuelle, Gecko n'implémente pas encore cette fonctionnalité (cf. bug 1241353).
Gestion du clic et du 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 |
| Presto (Opera 12) | Oui | Oui |
| Navigateurs mobiles | iOS 7.1.2 | Android 4.4.4 |
|---|---|---|
| Safari Mobile | Non (même avec tabindex) |
N/A |
| Chrome 35 | ??? | Oui |
Notes de compatibilité
- Les éléments
<button>sont beaucoup plus facile à mettre en forme que les éléments<input>. Vous pouvez y ajouter du contenu HTML (<img>par exemple) ou utiliser les pseudo-éléments:afteret:beforeafin de réaliser un rendu plus complexe. L'élément<input>ne permet de gérer qu'un élément textuel. - Il y a un bug pour Internet Explorer 7 : lorsqu'on envoie un formulaire avec
<button type="submit" value="toto">Cliquez-moi</button>,la donnéePOSTenvoyée seramonBouton=Cliquez-moiau lieu demonBouton=toto. Un autre bug s'applique à Internet Explorer 6 : l'envoi du formulaire par un bouton, enverra 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. Vous pouvez la surcharger si nécessaire pour ajouter votre propre style de focus en utilisant
button::-moz-focus-inner { } -
À la différence des autres navigateurs, pour Firefox, par défaut, l'état de désactivation persistera malgré le rechargement de la page pour un élément
<button>. Pour éviter ce comportement, on pourra utiliser l'attributautocompleteet lui donner la valeuroffpour désactiver cette fonctionnalité. Voir bug 654072. -
Les versions de Firefox pour Android antérieures à la version 35 applique un gradient de
background-imagesur tous les boutons (voir bug 763671). Cela peut être désactivé avecbackground-image: none.
Voir aussi
- Les autres éléments HTML utilisés pour créer des formulaires :

