<botón> frente a <tipo de entrada="botón" />. ¿Cuál usar?
Al mirar la mayoría de los sitios (incluido SO), la mayoría usa:
<input type="button" />
en lugar de:
<button></button>
- ¿Cuáles son las principales diferencias entre los dos, si las hay?
- ¿Existen razones válidas para utilizar uno en lugar del otro?
- ¿Existen razones válidas para utilizar combinarlos?
- ¿El uso
<button>
conlleva problemas de compatibilidad, ya que no se utiliza mucho?
- Aquí hay una página que describe las diferencias (básicamente puedes poner html en un
<button></button>
) - Y otra página que describe por qué la gente evita
<button></button>
(Pista: IE6)
Otro problema de IE al usar <button />
:
Y mientras hablamos de IE, tiene un par de errores relacionados con el ancho de los botones. Agregará misteriosamente relleno adicional cuando intentes agregar estilos, lo que significa que tendrás que agregar un pequeño truco para tener todo bajo control.
Solo como nota al margen, <button>
se enviará implícitamente, lo que puede causar problemas si desea utilizar un botón en un formulario sin enviarlo. Por tanto, otra razón para utilizar <input type="button">
(o <button type="button">
)
Editar - más detalles
Sin un tipo, button
recibe implícitamente el tipo desubmit
. No importa cuántos botones de envío o entradas haya en el formulario, cualquiera de ellos que esté explícita o implícitamente escrito como enviar, al hacer clic, enviará el formulario.
Hay 3 tipos admitidos para un botón
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"