Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Validar formulario para abrir modal

Estas en el tema de Validar formulario para abrir modal en el foro de Jquery en Foros del Web. Hola a todos, resulta que tengo un formulario el cual abre una modal para verificar datos y si son correctos enviarlos a procesarlos en BD. ...
  #1 (permalink)  
Antiguo 09/10/2014, 18:31
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Validar formulario para abrir modal

Hola a todos, resulta que tengo un formulario el cual abre una modal para verificar datos y si son correctos enviarlos a procesarlos en BD. Hasta este punto todo bien.

Lo que no he podido hacer es, validar mi formulario antes de abrir la modal para evitar que vayan datos nulos. El cógigo que utilizo es el siguiente:

Código Javascript:
Ver original
  1. $('#btn_confirm').on("click", function(event){
  2.  
  3.                 var form = $( "#frmsol");
  4.                 if (form.valid() != true) {
  5.                     console.log("No Validooo");
  6.                 } else {
  7.                
  8.                     //******************************
  9.                     var axin = 7;
  10.  
  11.                     if ($("#ngrupos").val()=="") {
  12.                         $("#ngrupos").val($("#ngruposph").val());
  13.                     };
  14.  
  15.                     $.post("solicitud_control.php",{id_curso_hc: $("#id_curso_hc").val(),id_tutor_responsable: $("#id_profesor_resp").val(), axn: axin, escuela_clave: $("#lst_materias option:selected").attr('escuela_clave'),  ngrupos: $("#ngrupos").val(), id_usuario: <?php echo $id_profesor;?>,lst_materias: $("#lst_materias option:selected").text(), lst_materias1: $("#lst_materias1").val(), fi: $("#fi").val(), ff: $("#ff").val(), ntutor: $("#ntutor").html(), codcursos: $("#codcursos").val(), obs: $("#obs").val(), grupo_insc: $("#grupo_insc").val(), grado: $("#grado_insc").val(), text_ciclo: $("#ciclo option:selected").text(), grupo: $("#grupo_insc").val(), tcurso: $("#t_curso").val()}).done(function(data){
  16.                     $("#myModal").modal('show');
  17.                     $("#mBody").empty().append(data);
  18.                     });
  19.  
  20.                     $('#btn_salvar').on('click', function(event){
  21.                         window.location = "index.php";
  22.                     });
  23.                     //******************************
  24.  
  25.                 }
  26.             });

pero hasta ahora no me respeta y abre la modal. Utilizo un boton y no un submit, y este lo coloco fuera del formulario, ya que si está dentro, trabaja como submit.

Alguien tiene ídea de lo que estoy haciendo mal.

Gracias de antemano.
__________________
__________________________________________________ ___________________________________
Las cosas más reales sólo suceden en la imaginación... Sólo recordamos, lo que nunca sucedió.
  #2 (permalink)  
Antiguo 09/10/2014, 19:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Validar formulario para abrir modal

Para empezar, haces mal al usar un botón externo en lugar del <input type="submit" /> que es el elemento nativo para enviar a un formulario a procesarse. Lo que debes de hacer es cancelar el envío para luego validar.

Código Javascript:
Ver original
  1. $("#id_formulario").on("submit", function(event){
  2.     event.preventDefault(); //Cancelo el envío
  3.     //Acá realizarás la validación y envío
  4. });

La cancelación del evento se realiza con el método preventDefault.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 10/10/2014, 16:03
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 10 años, 5 meses
Puntos: 44
Respuesta: Validar formulario para abrir modal

Hola Javier, cómo estás?

Hago un par de correcciones a tu código. La manera correcta de recoger el onsubmit de un formulario es haciendo referencia al formulario en sí. Y para detener el envío del mismo hasta que valide simplemente podés hacer un return false.

Te paso un ejemplo cortito de lo que quiero decir para que te hagas una idea y puedas implementarlo en tu código:

Código HTML:
<script type="text/javascript">
	$('#frmsol').on("submit", function(event){
                // Haces referencia a $(this) ya que fue el submit del form el que desencadenó la ejecución de la función
        	if ($(this).valid() != true) {
		    console.log("No Validooo");
		    return false;
		} else {
                    console.log('valida');
                }
	});
</script> 
Espero te sirva. Saludos!
  #4 (permalink)  
Antiguo 22/10/2014, 10:44
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Validar formulario para abrir modal

He estado haciendo ajustes a mi código, y he tomado consejo de ambos así como me he metido un poco a investigar. Trato de hacerlo lo mejor posible, pero me topo con la siguiente cuestión. Este es el código que tengo actualmente:

Código Javascript:
Ver original
  1. $('#frmsol').on("submit", function(event){
  2.  
  3.     if ($("#ngrupos").val()=="") {
  4.         $("#ngrupos").val($("#ngruposph").val());
  5.     };
  6.  
  7.     id_curso_hc = $("#id_curso_hc").val();
  8.     id_profesor_resp = $("#id_profesor_resp").val();
  9.     lst_materias_attr = $("#lst_materias option:selected").attr('escuela_clave');
  10.     ngrupos = $("#ngrupos").val();
  11.     id_usuario = <?php echo $id_profesor;?>;
  12.     lst_materias_text = $("#lst_materias option:selected").text();
  13.     lst_materias1 = $("#lst_materias1").val();
  14.     fi = $("#fi").val();
  15.     ff = $("#ff").val();
  16.     ntutor = $("#ntutor").html();
  17.     codcursos = $("#codcursos").val();
  18.     obs = $("#obs").val();
  19.     grupo_insc = $("#grupo_insc").val();
  20.     grado_insc = $("#grado_insc").val();
  21.     ciclo = $("#ciclo option:selected").text();
  22.     grupo = $("#grupo_insc").val();
  23.     t_curso = $("#t_curso").val();
  24.  
  25.  
  26.     validar(id_curso_hc, id_profesor_resp, lst_materias_attr, ngrupos, id_usuario, lst_materias_text, lst_materias1, fi, ff, ntutor, codcursos, obs, grupo_insc, grado_insc, ciclo, grupo, t_curso);
  27.                        
  28. });

lo que sucede es que al hacer "submit", me muestra la modal con los datos que requiero, pero se envían los datos, no se detiene a revisarlos.

¿Qué puedo hacer para que respete la modal?

Gracias de antemano.
__________________
__________________________________________________ ___________________________________
Las cosas más reales sólo suceden en la imaginación... Sólo recordamos, lo que nunca sucedió.
  #5 (permalink)  
Antiguo 22/10/2014, 12:38
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 10 años, 5 meses
Puntos: 44
Respuesta: Validar formulario para abrir modal

Podrías compartir también la función validar? Porque en ese código solo que pusiste no veo ningún return que controle el flujo del envío.

Saludos :)
  #6 (permalink)  
Antiguo 22/10/2014, 13:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Validar formulario para abrir modal

Cita:
Iniciado por JavierMMM Ver Mensaje
lo que sucede es que al hacer "submit", me muestra la modal con los datos que requiero, pero se envían los datos, no se detiene a revisarlos.
Eso sucede porque no evitas que el evento submit prosiga. Te vuelvo a repetir, necesitas controlar su accionar utilizando el método preventDefault.

Código Javascript:
Ver original
  1. $('#frmsol').on("submit", function(event){
  2.     event.preventDefault(); //Prevengo el funcionamiento normal del evento
  3.  
  4.     //El resto de instrucciones
  5. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 22/10/2014, 15:08
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Validar formulario para abrir modal

Hola de nuevo, tiene razón Alexis88, omití poner esa línea
Código HTML:
event.preventDefault();
funciona a la perfección.

GeekGirl, uso el validate de jQuery

Mi código queda de la siguiente manera:

Código Javascript:
Ver original
  1. $('#frmsol').on("submit", function(event){
  2.         event.preventDefault();
  3.      
  4.         if ($("#ngrupos").val()=="") {
  5.             $("#ngrupos").val($("#ngruposph").val());
  6.         };
  7.      
  8.         id_curso_hc = $("#id_curso_hc").val();
  9.         id_profesor_resp = $("#id_profesor_resp").val();
  10.         lst_materias_attr = $("#lst_materias option:selected").attr('escuela_clave');
  11.         ngrupos = $("#ngrupos").val();
  12.         id_usuario = <?php echo $id_profesor;?>;
  13.         lst_materias_text = $("#lst_materias option:selected").text();
  14.         lst_materias1 = $("#lst_materias1").val();
  15.         fi = $("#fi").val();
  16.         ff = $("#ff").val();
  17.         ntutor = $("#ntutor").html();
  18.         codcursos = $("#codcursos").val();
  19.         obs = $("#obs").val();
  20.         grupo_insc = $("#grupo_insc").val();
  21.         grado_insc = $("#grado_insc").val();
  22.         ciclo = $("#ciclo option:selected").text();
  23.         grupo = $("#grupo_insc").val();
  24.         t_curso = $("#t_curso").val();
  25.      
  26.      
  27.         validar(id_curso_hc, id_profesor_resp, lst_materias_attr, ngrupos, id_usuario, lst_materias_text, lst_materias1, fi, ff, ntutor, codcursos, obs, grupo_insc, grado_insc, ciclo, grupo, t_curso);
  28.                            
  29.     });

Gracias por su apoyo
__________________
__________________________________________________ ___________________________________
Las cosas más reales sólo suceden en la imaginación... Sólo recordamos, lo que nunca sucedió.

Etiquetas: formulario, modal
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 08:06.