javascript - ejemplo - Cómo evitar que un formulario se envíe en la función submitHandler del complemento jQuery Validate
jquery validate rules (6)
Lo hago así y funciona exactamente como quieres que funcione:
$("#myform").submit(function(e) {
e.preventDefault();
}).validate({
rules: {...},
submitHandler: function(form) {
alert("Do some stuff...");
//submit via ajax
return false; //This doesn''t prevent the form from submitting.
}
});
Estoy usando jQuery con el complemento de validación en http://docs.jquery.com/Plugins/Validation/validate
Deseo evitar que el formulario se envíe después de que se hayan realizado sus procesos de validación y envío a través de ajax. Tengo el siguiente código:
$("#myform").validate({
rules: {...},
submitHandler: function(form) {
alert("Do some stuff...");
//submit via ajax
return false; //This doesn''t prevent the form from submitting.
}
});
Sin embargo, el problema con esto es que submitHandler
envía el formulario a pesar de que tengo una return false;
declaración en la última línea de la función de manejo. Quiero evitar el comportamiento predeterminado y detener el envío del formulario porque ya lo he enviado a través de ajax.
¿Cómo debo evitar que el código se envíe después de pasar por los códigos ajax en la función submitHandler
?
Puede codificar esto de una manera muy simple a través de "jQuery Walidate". http://jquery.dop-trois.org/walidate/
Allí puede codificar una función, que se ejecutará en el envío. Busque devolución de llamada en la documentación.
Puede llamar a event.preventDefault()
en el evento submit
:
$("#myform").on("submit", function(event) {
event.preventDefault();
});
Tal vez pueda validar externamente sin usar un botón de enviar:
if($("#myform").valid()){
alert("Do some stuff...");
}
desafortunadamente, parece que la llamada: submitHandler: function(form){
no toma un argumento de evento, por lo que parece que la única solución es una return false
como esta:
...
submitHandler: function(form) {
//your code
return false;
},
...
$("#myform").validate({
rules: {...},
submitHandler: function(form, event) {
event.preventDefault();
alert("Do some stuff...");
//submit via ajax
}
});
Espero que esto ayude.