Deshabilitar el envío automático del formulario al hacer clic en el botón


Tengo un formulario HTML donde uso varios botones. El problema es que no importa en qué botón haga clic, el formulario se enviará incluso si el botón no es del tipo "enviar". por ejemplo, Botones como: <button>Click to do something</button>, dan como resultado el envío del formulario.

Es bastante doloroso hacer un e.preventDefault() para cada uno de estos botones.

Uso jQuery y jQuery UI y el sitio web está en HTML5.

¿Hay alguna forma de desactivar este comportamiento automático?

Author: Deduplicator, 2012-03-22

4 answers

Botones como <button>Click to do something</button> son los botones de envío.

Establece type="button" para cambiar eso. type="submit" es el valor predeterminado (como especificado por la recomendación HTML).

 313
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-29 11:39:11

No es difícil hacer lo que quieres. Puedes intentar usar return false (return false anula el comportamiento predeterminado en cada elemento DOM) de esta manera:

myform.onsubmit=function()
{ 
  //do what you want;
  return false;
}

Y luego envíe su formulario usando myform.submit ()

O alternativamente:

mybutton.onclick=function () 
{
   //do what you want;
   return false;
}

Sin embargo, creo que Input type="button"/Button type="button" no enviará su formulario y podría usarlos sin ningún problema.

 13
Author: Boris D. Teoharov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-22 15:18:34

<button>'s son de hecho botones de envío, no tienen ninguna otra funcionalidad principal. Usted tendrá que establecer el tipo de botón.
Pero si enlaza su controlador de eventos como a continuación, se dirige a todos los botones y no tiene que hacerlo manualmente para cada botón!

$('form button').on("click",function(e){
    e.preventDefault();
});
 6
Author: mas-designs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-12 09:43:30

Si desea agregar directamente a la entrada como atributo, use este

 onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

Esto evitará el comportamiento de envío de formularios

 0
Author: blackholeearth0_gmail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-08 08:18:13