2012-03-22 28 views
120

Tengo un formulario HTML donde utilizo varios botones. El problema es que no importa en qué botón haga clic, el formulario será enviado aunque el botón no sea del tipo "enviar". p.ej. Botones como: <button>Click to do something</button>, dan como resultado el envío de formularios.Deshabilitar formulario enviar automáticamente en el botón haga clic en

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 manera de deshabilitar este comportamiento automático?

Respuesta

277

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

Conjunto type="button" para cambiar eso. type="submit" es el valor predeterminado (como specified by the HTML recommendation).

+5

perdido el sueño de un día de la fijación en vano mi código, porque yo no sabía este simple especificación ! – palerdot

+4

Haciendo eco de la noción de palerdot, me alegro de haber encontrado esta nota después de una búsqueda rápida en Google y no de horas muertas. Muy bien, muchas gracias. – brooklynsweb

+0

¡esto es genial! –

5

<button> de hecho son botones de envío, no tienen ninguna otra funcionalidad principal. Deberá configurar el tipo de botón.
Pero si enlaza su manejador de eventos como se muestra a continuación, apunte a todos los botones y no tenga que hacerlo manualmente para cada botón.

$('form button').on("click",function(e){ 
    e.preventDefault(); 
}); 
+0

Es 'e.preventDefault();'. – hlcs

+0

gracias, me perdí un poco eso hace 5 años ;-) –

11

No es difícil hacer lo que desea. Sólo podría tratar de usar retorno falsa (return false anula comportamiento predeterminado en cada elemento DOM) así:

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

y luego enviar su formulario utilizando 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 puede usarlo sin ningún problema.

-1

si desea agregar directamente a la entrada como atributo, utilice este

onclick="return false;" 

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

esta forma evitará que presenten un comportamiento

Cuestiones relacionadas