Tengo un formulario Fuera de esa forma, tengo un botón. Un botón simple, como este:
<button>My Button</button>
Sin embargo, cuando hago clic en él, envía el formulario. Aquí está el código:
<form id="myform">
<input />
</form>
<button>My Button</button>
Todo lo que este botón debe hacer es un poco de JavaScript. Pero incluso cuando se ve exactamente como en el código anterior, envía el formulario. Cuando cambio el botón de etiqueta para abarcar, funciona perfectamente. Pero desafortunadamente, debe ser un botón. ¿Hay alguna forma de impedir que ese botón envíe el formulario? Como por ejemplo
<button onclick="document.getElementById('myform').doNotSubmit();">My Button</button>
javascript
html
arik
fuente
fuente
button
estype=submit
, no se debe enviar ningún formulario cuando elbutton
elemento está fuera de cualquier formulario. A menos que se pueda dar una demostración real (un documento de muestra, identificación de un navegador y una descripción de las observaciones que muestran que se envía algún formulario), esta pregunta debe cerrarse como no reproducible. Usartype=button
es una buena práctica, pero esto no hace que el problema sea real.Respuestas:
Creo que esta es la pequeña peculiaridad más molesta de HTML ... Ese botón debe ser del tipo "botón" para no enviarlo.
Actualización 5-feb-2019: según el estándar de vida HTML (y también la especificación HTML 5 ):
fuente
to use <button>
<button>
incorrectamente en algunos casos. Además,<button>
no es 100% compatible con todos los navegadores, ya que diferentes navegadores pueden enviar valores diferentes para el mismo<button>
cuando se usan en un formulario.type
atributo en una<button>
etiqueta essubmit
. Cuando se cambia atype=button
, no<button>
se da el comportamiento predeterminado. Vertype
atributo aquí: developer.mozilla.org/en-US/docs/Web/HTML/Element/button<button type='submit'>
Eso es demasiado difícil para mí, jaja. De todos modos su respuesta funciona muy bien!return false;
al final del controlador onclick hará el trabajo. Sin embargo, es mejor simplemente agregartype="button"
al<button>
- de esa manera, se comporta correctamente incluso sin ningún JavaScript.fuente
return false;
no funciona en todos los escenarios, mientras que lotype="Button"
hace. Incluso con JavaScript habilitado.Dave Markle tiene razón. Desde el sitio web de W3School :
En otras palabras, el navegador que está utilizando sigue las especificaciones del W3C.
fuente
Por defecto, los botones html envían un formulario.
En otras palabras, el tipo de botón es "enviar" por defecto
Para obtener más información, consulte la información de la red de desarrolladores de Mozilla sobre botones: https://developer.mozilla.org/en/docs/Web/HTML/Element/button
fuente
Se recomienda no usar la
<Button>
etiqueta. Use la<Input type='Button' onclick='return false;'>
etiqueta en su lugar. (El uso de "return false" no debería enviar el formulario).Un poco de material de referencia
fuente
<input type="button" />
, y es suficientereturn false;
: no hay necesidad de hacer ambas cosas.Por razones de accesibilidad, no pude lograrlo con varios
type=submit
botones. La única forma de trabajar de forma nativa conform
varios botones, pero SOLO se puede enviar el formulario alEnter
presionar la tecla, es asegurarse de que solo uno de ellos sea detype=submit
otro tipo, mientras que otros son de otro tipotype=button
. De esta manera, puede beneficiarse de la mejor experiencia del usuario al tratar con un formulario en un navegador en términos de compatibilidad con el teclado.fuente
Otra opción que funcionó para mí fue agregar onsubmit = "return false;" a la etiqueta del formulario.
Semánticamente probablemente no sea una solución tan buena como los métodos anteriores para cambiar el tipo de botón, pero parece ser una opción si solo desea un elemento de formulario que no se enviará.
fuente