Foros del Web » Programando para Internet » Jquery »

Validar todos los campos de un formulario al mismo tiempo

Estas en el tema de Validar todos los campos de un formulario al mismo tiempo en el foro de Jquery en Foros del Web. Hola buenas tardes. Miren estoy haciendo un formulario de registro en el cual quiero hacer que todos los campos se validen al mismo tiempo, intente ...
  #1 (permalink)  
Antiguo 15/09/2015, 12:39
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 9 años, 11 meses
Puntos: 0
Validar todos los campos de un formulario al mismo tiempo

Hola buenas tardes.
Miren estoy haciendo un formulario de registro en el cual quiero hacer que todos los campos se validen al mismo tiempo, intente separar cada if tanto en el JS como en el PHP, pero no me funciona correctamente, no se realmente como debo hacer eso, les dejo mi código para ver si me pueden ayudar:

JS
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $("#reg").submit(function(event){
  3.         event.preventDefault();
  4.         $.ajax({
  5.             url:'registro.php',
  6.             type: 'POST',
  7.             dataType: 'json',
  8.             data: $("#reg").serializeArray()
  9.         }).done(function(Result){
  10.             if(Result.Error == "Ok") {
  11.                 window.location.href = '/principal';
  12.             }else{
  13.                
  14.                 if(Result.Error == 'Required_M') {
  15.                     $('.inptm').prepend('<div>Este campo es requerido.</div>');
  16.                 }else if(Result.Error == "Mail_A") {
  17.                     $('.inptm').prepend('<div>El email ingresado no es válido.</div>');
  18.                 }else if(Result.Error == "Mail_B") {
  19.                     $('.inptm').prepend('<div>El email ya esta registrado.</div>');
  20.                 }
  21.                
  22.                 if(Result.Error == 'Required_P') {
  23.                     $('.inptp').prepend('<div>Este campo es requerido.</div>');
  24.                 }else if(Result.Error == "Password") {
  25.                     $('.inptp').prepend('<div>Las contraseñas ingresadas no coinciden.</div>');
  26.                 }
  27.                
  28.                 if(Result.Error == 'Required_D') {
  29.                     $('.inptd').prepend('<div>Este campo es requerido.</div>');
  30.                 }
  31.                
  32.                 if(Result.Error == 'Required_T') {
  33.                     $('.t_c').prepend('<div>Debes aceptar los terminos y condiciones.</div>');
  34.                 }
  35.                
  36.             }
  37.         });
  38.     });
  39. });

PHP
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     require 'Config.php';
  4.     $Result = new stdClass();
  5.    
  6.     $password = $_POST['password'];
  7.     $mail = $_POST['mail'];
  8.  
  9.     $checkmail = Mysqli::Query("SELECT Mail FROM users WHERE Mail = '".$mail."'");
  10.    
  11.     if(isset($_POST['terms']) == 'acepto'):
  12.         $RsT_Ok = true;
  13.     else:
  14.         $Result->Error = 'Required_T';
  15.     endif;
  16.    
  17.     if($_POST['fdia'] == NULL || $_POST['fmes'] == NULL || $_POST['fyear'] == NULL):
  18.         $Result->Error = 'Required_D';
  19.     else:
  20.         $RsD_Ok = true;
  21.     endif;
  22.    
  23.     if($password == NULL):
  24.         $Result->Error = 'Required_P';
  25.     elseif($password != $_POST['repassword']):
  26.         $Result->Error = 'Password';
  27.     else:
  28.         $RsP_Ok = true;
  29.     endif;
  30.    
  31.     if($mail == null):
  32.         $Result->Error = 'Required_M';
  33.     elseif(!Functions::Validate($mail)):
  34.         $Result->Error = 'Mail_A';
  35.     elseif($checkmail->num_rows >= 1):
  36.         $Result->Error = 'Mail_B';
  37.     else:
  38.         $RsM_Ok = true;
  39.     endif;
  40.        
  41.    
  42.     if(isset($RsM_Ok, $RsP_Ok, $RsD_Ok, $RsT_Ok)):
  43.         $password = crypt($password, '$6$x19$\w/dasd%$ewrwg$sadas%&asdasdaw$');
  44.         $username = strstr($mail, '@', true);
  45.        
  46.             Mysqli::Query("INSERT INTO users (username, Mail, Password, Day_Month, Year) VALUES ('".$username."', '".$mail."', '".$password."', '".$_POST['fdia']." de ".$_POST['fmes']."', '".$_POST['fyear']."')");
  47.            
  48.             $Reg = Mysqli::Query("SELECT Mail FROM users WHERE Mail = '".$mail."'");
  49.             $Register = $Reg->fetch_array();
  50.            
  51.             $_SESSION['mail'] = $Register['Mail'];
  52.             $Result->Error = 'Ok';
  53.     endif;
  54.         echo json_encode($Result);
  55. ?>

Les comento que SI me valida todo perfectamente pero uno por uno y lo que yo deseo es que se validen todos al mismo tiempo ¿Me dan una mano?
Nota: No supe si colocarlo aquí o en PHP, lo siento.
Graicas
  #2 (permalink)  
Antiguo 15/09/2015, 12:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar todos los campos de un formulario al mismo tiempo

En lugar de regresar un valor, regresa un array con las respuestas y solo para las que sean de error, muestras el respectivo mensaje.

Un saludo
__________________
«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 16/09/2015, 11:05
 
Fecha de Ingreso: junio-2014
Mensajes: 60
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Validar todos los campos de un formulario al mismo tiempo

Cita:
Iniciado por Alexis88 Ver Mensaje
En lugar de regresar un valor, regresa un array con las respuestas y solo para las que sean de error, muestras el respectivo mensaje.

Un saludo
Hola.
Gracias por contestar he hecho lo siguiente con array:
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     require 'Config.php';
  4.     $Result = new stdClass();
  5.     $Result->Error = [];
  6.    
  7.     $password = $_POST['password'];
  8.     $mail = $_POST['mail'];
  9.  
  10.     $checkmail = Mysqli::Query("SELECT Mail FROM users WHERE Mail = '".$mail."'");
  11.    
  12.     if($mail == null):
  13.         $Result->Error[] = ['Mail' => 'Required_M'];
  14.     elseif(!Functions::Validate($mail)):
  15.         $Result->Error[] = ['Mail' => 'Mail_A'];
  16.     elseif($checkmail->num_rows >= 1):
  17.         $Result->Error[] = ['Mail' => 'Mail_B'];
  18.     else:
  19.         $RsM_Ok = true;
  20.     endif;
  21.    
  22.     if($password == NULL):
  23.         $Result->Error[] = ['Password' => 'Required_P'];
  24.     elseif($password != $_POST['repassword']):
  25.         $Result->Error[] = ['Password' => 'Password'];
  26.     else:
  27.         $RsP_Ok = true;
  28.     endif;
  29.    
  30.     if($_POST['fdia'] == NULL || $_POST['fmes'] == NULL || $_POST['fyear'] == NULL):
  31.         $Result->Error[] = ['Date' => 'Required_D'];
  32.     else:
  33.         $RsD_Ok = true;
  34.     endif;
  35.  
  36.    
  37.     if(isset($_POST['terms']) == 'acepto'):
  38.         $RsT_Ok = true;
  39.     else:
  40.         $Result->Error[] = ['Terms' => 'Required_T'];
  41.     endif;
  42.    
  43.    
  44.     if(isset($RsM_Ok, $RsP_Ok, $RsD_Ok, $RsT_Ok)):
  45.         $password = crypt($password, '$6$x19$\w/dasd%$ewrwg$sadas%&asdasdaw$');
  46.         $username = strstr($mail, '@', true);
  47.        
  48.             Mysqli::Query("INSERT INTO users (username, Mail, Password, Day_Month, Year) VALUES ('".$username."', '".$mail."', '".$password."', '".$_POST['fdia']." de ".$_POST['fmes']."', '".$_POST['fyear']."')");
  49.            
  50.             $Reg = Mysqli::Query("SELECT Mail FROM users WHERE Mail = '".$mail."'");
  51.             $Register = $Reg->fetch_array();
  52.            
  53.             $_SESSION['mail'] = $Register['Mail'];
  54.             $Result->Error = 'Ok';
  55.     endif;
  56.    
  57.     if(count($Result) > 0 ):
  58.         for($contador=0; $contador < count($Result); $contador++)
  59.             echo json_encode($Result);
  60.     endif;
  61. ?>

En efecto me muestra todos los resultados pero no en la web ¿Tengo que modificar algo en el JS?
  #4 (permalink)  
Antiguo 16/09/2015, 12:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar todos los campos de un formulario al mismo tiempo

Cuando te sugerí que devuelvas un array, me refería a que reúnas todos mensajes en un solo array, lo devuelvas al lado del cliente y con JS los leas uno a uno mediante un bucle.
__________________
«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

Etiquetas: ajax, campos, formulario, funcion, javascript, js, php, select, tiempo
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 10:08.