¿Cómo evitar que se envíe el formulario?
Tengo un formulario que tiene un botón de enviar en alguna parte.
Sin embargo, me gustaría "captar" de alguna manera el evento de envío y evitar que ocurra.
¿Hay alguna manera de que pueda hacer esto?
No puedo modificar el botón de enviar porque es parte de un control personalizado.
A diferencia de las otras respuestas, el retorno false
es sólo una parte de la respuesta. Considere el escenario en el que ocurre un error de JS antes de la declaración de devolución...
HTML
<form onsubmit="return mySubmitFunction(event)">
...
</form>
guion
function mySubmitFunction()
{
someBug()
return false;
}
regresar false
aquí no se ejecutará y el formulario se enviará de cualquier manera. También debe llamar preventDefault
para evitar la acción de formulario predeterminada para envíos de formularios Ajax.
function mySubmitFunction(e) {
e.preventDefault();
someBug();
return false;
}
En este caso, incluso con el error, ¡el formulario no se enviará!
Alternativamente, try...catch
se podría utilizar un bloque.
function mySubmit(e) {
e.preventDefault();
try {
someBug();
} catch (e) {
throw new Error(e.message);
}
return false;
}
Puedes usar un evento en línea onsubmit
como este
<form onsubmit="alert('stop submit'); return false;" >
O
<script>
function toSubmit(){
alert('I will not submit');
return false;
}
</script>
<form onsubmit="return toSubmit();" >
Manifestación
Ahora bien, esto puede no ser una buena idea cuando se realizan grandes proyectos. Es posible que necesite utilizar detectores de eventos.
Lea más sobre eventos en línea frente a oyentes de eventos (addEventListener y IE adjuntoEvent) aquí . Porque no puedo explicarlo mejor que Chris Baker .
Ambos son correctos, pero ninguno de ellos es "mejor" per se, y puede haber una razón por la que el desarrollador decidió utilizar ambos enfoques.