¿Cómo evito que se envíe un formulario usando jquery?
Lo intenté todo: vea 3 opciones diferentes que probé a continuación, pero no funcionará:
$(document).ready(function() {
//option A
$("#form").submit(function(e){
e.preventDefault();
});
//option B
$("#form").submit(function(e){
stopEvent(e);
});
//option C
$("#form").submit(function(){
return false;
});
});
¿Qué podría estar mal?
Actualización: aquí está mi html:
<form id="form" class="form" action="page2.php" method="post">
<!-- tags in the form -->
<p class="class2">
<input type="submit" value="Okay!" />
</p>
</form>
¿Hay algo mal aquí?
return false;
después de que.submit()
funcionó para mí! Estaba teniendo el mismo problemae.preventDefault();
no se alcanza / ejecuta el código.Respuestas:
Se destacan dos cosas:
form
. Más bien, consulte la etiqueta soltando el #.También
e.preventDefault
es la sintaxis correcta de JQuery, p. Ej.La opción C también debería funcionar. No estoy familiarizado con la opción B
Un ejemplo completo:
fuente
$('#form')
a$('.form')
para los atributos de clase.Probablemente tenga pocos formularios en la página y el uso de $ ('formulario'). Submit () agrega este evento a la primera aparición del formulario en su página. Utilice el selector de clase en su lugar, o intente esto:
o mejor versión del mismo:
fuente
Para evitar el uso predeterminado / evitar el envío del formulario
Para detener el uso de burbujas de eventos
Para evitar el envío de formularios, 'return false' también debería funcionar.
fuente
event.stopPropagation()
yevent.preventDefault()
Una.false
Valor también se puede pasar por el controlador como una abreviatura defunction(){ return false; }
".También tuve el mismo problema. También había intentado lo que tú habías intentado. Luego cambio mi método para no usar jquery sino mediante el uso del atributo "onsubmit" en la etiqueta del formulario.
Funciona.
Pero, cuando intenté poner el valor de retorno falso solo en "thefunction ()", no impide el proceso de envío, así que debo poner "return false;" en atributo onsubmit. Entonces, concluyo que mi aplicación de formulario no puede obtener el valor de retorno de la función Javascript. No tengo idea al respecto.
fuente
false;
yreturn false;
. Necesitarías teneronsubmit="return thefunction();"
Tuve el mismo problema y lo resolví de esta manera (no es elegante pero funciona):
Y tiene la ventaja, en mi opinión, de que puede revertir la situación en cualquier momento que desee:
fuente
$('#form').removeAttr('onsubmit');
Adjunte el evento al elemento de envío, no al elemento de formulario. Por ejemplo, en tu html haz esto
fuente
Simplemente puede verificar si el formulario es válido, en caso afirmativo, ejecute la lógica de envío; de lo contrario, muestre un error.
HTML
Javascript
fuente
Cuando estoy usando la
<form>
etiqueta sin el atributoid="form"
y lo llamo por su nombre de etiqueta directamente en jquery, funciona conmigo.su código en el archivo html:
y en script Jquery:
fuente
$('#form')
busca un elemento conid="form"
.$('form')
busca el elemento de formulariofuente
Olvida la identificación del formulario y funciona
fuente
desde aquí: https://api.jquery.com/submit-selector/ (página interesante sobre tipos de envío)
fuente
Esto también parece funcionar y puede ser un poco más simple:
fuente
Usando jQuery, puede hacer lo siguiente:
1- Use el evento de envío de formulario nativo con un botón Enviar, mientras evita que el evento se active, luego
2- Verifique el formulario Propiedad válida Esto se puede implementar de la siguiente manera:
1- HTML:
2- Javascript
fuente