Foros del Web » Programando para Internet » Jquery »

Detener submit

Estas en el tema de Detener submit en el foro de Jquery en Foros del Web. Señores, que tal, tengo la siguiente inquietud. Deseo que al momento de existir algún error de validación, el evento clic de un botón submit se ...
  #1 (permalink)  
Antiguo 06/01/2016, 14:39
 
Fecha de Ingreso: noviembre-2013
Mensajes: 5
Antigüedad: 7 años, 6 meses
Puntos: 0
Detener submit

Señores, que tal, tengo la siguiente inquietud. Deseo que al momento de existir algún error de validación, el evento clic de un botón submit se detenga y en caso contrario, avance. A continuación, mi código:

$(document).ready(function() {
$("form[name=agregar] input[name=servicio]").focus();
$('#guardar').on('click', function (e) {
$.ajax({
type: $("form[name=agregar]").attr("method"),
url : $("form[name=agregar]").attr("action"),
data: $("form[name=agregar]").serialize(),
success: function(data) {
if (data.success == false) {
e.preventDefault();
e.stopPropagation();
var errores = "";
$("form[name=agregar] input[name=servicio]").attr('style', 'border: 1px solid #F00;');
$("form[name=agregar] input[name=servicio]").focus();
for(datos in data.mensaje){
errores += data.mensaje[datos] + "\n";
}
toastr.error(errores, "Información de Sistema");
return false;
}
},
error: function(error) {
}
});
});
});

Señores, edito para que se entienda más, pues créanme que he tratado un montón de formas para tratar de hacerlo.

Si se fijan, en el jQuery no hay ninguna validación directa, pues el flujo que realizo mediante ajax es ir a un método de un controlador de laravel. En este controlador realizo las validaciones y retorno los mensajes de error o success mediante json y eso es lo que está recibiendo.

Dado lo anterior, si pongo un e.preventDefault(); al principio, al estar todo bien, se va a quedar en la misma página y no redirigirá a la página en que aparece el listado de servicios (típico crud), así como si realizo un submit al estar todo bien, va a intentar nuevamente guardar datos y lógicamente ya van a estar vacíos y devolverá mensaje de error.

Para salir luego del paso, se me ocurre redireccionar y crear una sesión flash con el mensaje de success y colocar el e.preventDefault(); al principio, lo malo de esto, es que tendría que hacerlo en cada vista perteneciente a los create y update.

De antemano, muchas gracias.

Última edición por loser213; 06/01/2016 a las 20:04 Razón: Que sea más entendible
  #2 (permalink)  
Antiguo 09/01/2016, 22:04
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 8 años, 1 mes
Puntos: 10
Respuesta: Detener submit

Para esto crea antes una funcion para validar

Código Javascript:
Ver original
  1. function validar(){
  2.     //aqui pon los condiciones para validar
  3.     //por ejemplo:
  4.     if($('#tu_campo_1').val() == ""){
  5.         //puedes sacar un alert() aquy o indicar de algun modo al usuario que el campo x no esta bien completado
  6.        
  7.         return false;
  8.     }
  9.     //aqui otra condicion ... si no cumple .. return false
  10.    
  11.     //si ninguna condicion no ha returnado false entonces todo esta bien
  12.     return true;
  13. }
  14.  
  15. //luego en el evento click que tenias
  16. $('#guardar').on('click', function (e) {
  17.     if(validar()){
  18.         //aqui pones el ajax
  19.         console.log('true');
  20.     }else{
  21.         //aqui puedes poner aviso que no esta bien algo
  22.         console.log('false');
  23.     }
  24. });

Etiquetas: detener, submit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:03.