1840 votes

<button> vs. <input type="button" />. Que faut-il utiliser ?

En regardant la plupart des sites (y compris SO), la plupart d'entre eux utilisent :

<input type="button" />

au lieu de :

<button></button>
  • Quelles sont les principales différences entre les deux, le cas échéant ?
  • Y a-t-il des raisons valables d'utiliser l'un plutôt que l'autre ?
  • Y a-t-il des raisons valables de les combiner ?
  • Est-ce que l'utilisation <button> s'accompagne de problèmes de compatibilité, étant donné que son utilisation n'est pas très répandue ?

21 votes

Citant le documentation à partir d'octobre 2020 : While <input> elements of type button are still perfectly valid HTML, the newer <button> element is now the favored way to create buttons. Given that a <button>’s label text is inserted between the opening and closing tags, you can include HTML in the label, even images.

2 votes

@Jakob Je comprends que MDN est une référence décente, mais je n'ai pas vraiment trouvé de recommandations similaires dans la spécification HTML5 ou dans les documents de type RFC.

4 votes

@Jakob Le réseau des développeurs Mozilla est pas "Il s'agit d'une ressource publique (bénévole) qui fonctionne plutôt comme une "annexe" [pratique] à des spécifications largement acceptées, comme celle publiée par le WHATWG pour le HTML 5 à l'adresse suivante html.spec.whatwg.org .

716voto

Tamas Czinege Points 49277
  • Voici une page décrivant les différences (en gros, vous pouvez mettre le html dans un <button></button> )
  • Et une autre page décrivant pourquoi les gens évitent <button></button> (Indice : IE6)

Un autre problème d'IE lors de l'utilisation <button /> :

Et pendant qu'on parle d'IE, c'est a quelques bugs liés à la largeur des boutons. Il va mystérieusement ajoutera mystérieusement un rembourrage supplémentaire lorsque vous essayez d'ajouter des styles, ce qui signifie que vous devez ajouter un petit hack pour que les choses soient sous contrôle.

236 votes

Cette réponse date de 2009, puisque IE6 est mort maintenant, je suppose qu'il n'y a aucune raison de ne pas utiliser <button> maintenant ?

83 votes

S'ils veulent pirater, laissez-les obtenir une version pourrie de votre site. Laissez tomber IE6, laissez tomber IE7, malheureusement IE8 a toujours besoin d'être supporté.

17 votes

Selon le site de Microsoft Page du compte à rebours IE6 En Chine, l'utilisation d'IE6 est toujours de l'ordre de 22 % (en janvier 2014). ie6death.com note que la prise en charge d'IE6 prend fin le 8 avril 2014.

391voto

Travis J Points 28588

Juste en passant, <button> se soumet implicitement, ce qui peut poser des problèmes si vous souhaitez utiliser un bouton dans un formulaire sans qu'il se soumette. Ainsi, une autre raison d'utiliser <input type="button"> (o <button type="button"> )

Modifier - plus de détails

Sans type, button reçoit implicitement le type de submit . Peu importe le nombre de boutons d'envoi ou d'entrées dans le formulaire, tout bouton d'envoi explicitement ou implicitement saisi comme un envoi, lorsqu'il est cliqué, soumet le formulaire.

Il existe trois types de boutons

submit ||  "submits the form when clicked (default)"
reset  ||  "resets the fields in the form when clicked"
button ||  "clickable, but without any event handler until one is assigned"

4 votes

Pouvez-vous ajouter plus de détails ? que se passe-t-il s'il y a plusieurs boutons ? est-ce seulement le type='submit' qui fait cela ?

61 votes

Oh cher W3C, pourquoi submit par défaut alors que 99,9% des formulaires ont beaucoup de button con un submit ? !

16 votes

De nombreux formulaires ne comportent qu'un seul bouton, celui de l'envoi. J'ai dû prendre une décision dans un sens ou dans l'autre, je suppose.

190voto

Noldorin Points 67794

Cet article semble offrir un assez bon aperçu de la différence.

De la page :

Les boutons créés avec l'élément BUTTON fonctionnent comme des boutons. créés avec l'élément INPUT, mais ils offrent un rendu plus riche de rendu plus riches : l'élément BUTTON peut avoir du contenu. Par exemple, un élément BUTTON qui contient une image fonctionne comme et peut ressembler à un élément INPUT dont le type est défini sur "image", mais le type de l'élément BUTTON autorise le contenu.

L'élément bouton - W3C

57voto

Santhosh Points 149

A l'intérieur d'un <button> vous pouvez y placer du contenu, comme du texte ou des images.

<button type="button">Click Me!</button> 

C'est la différence entre cet élément et les boutons créés avec l'élément <input> élément.

8 votes

+1, puisque <input /> est en effet un élément vide, tandis que <button> n'est pas

45voto

user54579 Points 1404

Citation

Important : si vous utilisez l'élément bouton dans un formulaire HTML, les différents navigateurs soumettront des valeurs différentes. Internet Explorer soumettra le texte situé entre les boutons <button> y </button> tandis que les autres navigateurs soumettront le contenu de l'attribut value. Utilisez l'élément input pour créer des boutons dans un formulaire HTML.

De : http://www.w3schools.com/tags/tag_button.asp

Si je comprends bien, la réponse est la compatibilité et la cohérence des données d'un navigateur à l'autre.

45 votes

@Hawken Cette page a été écrite par des idiots qui pensaient que W3Schools prétendait être le W3C. En réalité, W3Schools n'est ni meilleur ni pire que des milliers d'autres sites qui traitent ce genre de sujets.

0 votes

En fait, cela dépend de la version d'IE et du mode IE - w3schools a mis à jour l'info depuis la citation

13 votes

@MrLister J'ai parlé à des personnes qui pensent que W3Schools est associé au W3C. Bien que je ne sois pas sûr d'être d'accord avec la "responsabilité de fournir des informations exactes" de W3Fools, je pense que l'exactitude de W3Schools laisse à désirer, et que ses critiques ne sont pas nécessairement des idiots. (J'ai beaucoup appris de W3S, à l'époque où il était bon ; il n'a pas suivi le rythme des normes).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X