• Publicidad

Validar campos de un formulario con JavaScript desde Perl

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Validar campos de un formulario con JavaScript desde Perl

Notapor misionero » 2008-03-24 10:11 @466

Buenas estoy probando un formulario en donde se valida los campos nombre, dirección, ciudad, correo electrónico, etc. con JavaScript. Al abrirlo directo en el navegador (explorer) lo valida perfectamente pero al pasar ese mismo código a un cgi de Perl me empieza a votar muchos errores.

Si alguien tuviera algún ejemplo que me pudiera servir para guiarme para la validación de esos campos desde Perl.
misionero
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-03-24 09:47 @449

Publicidad

Notapor explorer » 2008-03-24 10:56 @497

Bienvenido a los foros de Perl en Español, misionero.

Sería interesante ver el código que estás usando en el CGI, y/o el error que te sale.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor misionero » 2008-03-24 11:48 @533

Este es el código que estoy usando en el cgi; al abrir únicamente la parte de la validación del formulario lo valida sin ningún problema pero al ya integrarlo al cgi no hace nada.

Agradezco mucho tu ayuda, mil gracias

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use Eflow::user_check;
use Time::Local;
use Date::Calc qw(Today Delta_Days);



 ReadParse();
 print PrintHeader();


if ($in{'comando'} eq '') {
    menu();
}


sub menu {

    print <<"--FIN--";
  <html>
      <head>
      <script language="javascript" type="text/javascript">
      function validacion(formulario) {

          var er_nombre = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/
          var er_telefono = /^([0-9\s\+\-])+$/
            var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
            var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
            var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201$
            var er_mes29dias = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(2000|2004|2008|2012|2016|2020)$/
            //direccion de correo electronico
            var er_email = /^(.+\@.+\..+)$/
            var x

          //comprueba 50 caracteres maximo
            for(x = 1; x < 5; x++) {
                if (formulario.elements[x].value.length > 50) {
                    alert('La lontitud máxima permitida para cualquier campo es de 10 caracteres.')
                      return false
                      }

            }

          //comprueba campo de nombre
            if(!er_nombre.test(formulario.nombre.value)) {
                alert('Contenido del campo NOMBRE no válido.')
                  return false
            }

          //comprueba campos de telefonos (permite campos vacios y guiones)
            if( !er_telefono.test(formulario.telefono.value) ) {
                alert('Contenido del campo TELEFONO no válido.')
                  return false
                  }

          //comprueba la fecha segun calendario (hasta el 2020, ojo)
            if (!(er_mes31dias.test(formulario.fecha.value) ||
                er_mes30dias.test(formulario.fecha.value) ||
                er_mes29dias.test(formulario.fecha.value) ||
                er_mes28dias.test(formulario.fecha.value))) {
                    alert('Contenido del campo FECHA no válido.')
                      return false
                      }

          //comprueba campo de email
            if(!er_email.test(formulario.email.value)) {
                alert('Contenido del campo E-MAIL no válido.')
                  return false
            }

          alert('Los campos introducidos son CORRECTOS.')
            return false//cambiar por return true para ejecutar la accion del formulario
            }
    </script>
      </head>
      <body>
      <form onsubmit="return validacion(this)" name="FormValidacion"><small>Nombre:</small><br>
      <input type="text" name="nombre" size="14"><br><br><small>Teléfono:</small><br>
      <input type="text" name="telefono" size="14"><br><br><small>Fecha (dd/mm/aaaa):</small><br>
      <input type="text" name="fecha" size="14"><br><br><small>E-mail:</small><br>
      <input type="text" name="email" size="14"><br><br>
      <input type="submit" value="Validar" name="boton_envio">
      <input type="reset" value="Borrar" ame="boton_borrar"></form>
      </body>
      </html>

--FIN--
}
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
misionero
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-03-24 09:47 @449

Notapor explorer » 2008-03-24 12:03 @544

Se supone que en algún sitio estarán definidas las funciones ReadParse(), PrintHeader()... y también supongo que ReadParse() se encargará de actualizar la variable %in, que es la que veo que usas para decidir si pintas o no el código HTML.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Validar en java script

Notapor carlos_82 » 2012-01-06 09:20 @431

Buenas tardes. Tengo un problema con esta validación: no me funciona. Me valida los tres primeros campos; cuando le agrego la fecha no funciona. Le agradezco a quien me pueda ayudar.

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. <script language="javascript" type="text/javascript">  
  2.  
  3. function validacion(formulario) {  
  4.  
  5.   //letra, numero,
  6.       var codequipo = /^([a-zA-Z0-9_ ])+$/                      //letra, numero,  
  7.     var nombreequipo = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/  //letras, '.' y '-' o vacio  
  8.         var descripcion = /^([a-zA-Z0-9_ \s])+$/  //letras, '.' y '-' o vacio  
  9.             //fechas, formato dd/mm/aaaa o d/m/aa
  10.                   var fechaingreso=  /^((?:19|20)\d\d)\/((?:0?[1-9])|(?:1[0-2]))\/((?:0?[1-9])|(?:[12]\d)|(?:3[01]))$/
  11.         var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
  12.             var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
  13.             var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201$
  14.  
  15.                  for(x = 1; x < 5; x++) {  
  16.         if (formulario.elements[x].value.length > 50) {  
  17.             alert('La lontitud máxima permitida para cualquier campo es de 10 caracteres.')  
  18.             return false  
  19.         }  
  20.     }
  21.        
  22.            if(!codequipo.test(formulario.codequipo.value)) {  
  23.         alert('Contenido del campo Codequipo no válido.')  
  24.         return false  
  25.     }        
  26.   if(!nombreequipo.test(formulario.nombreequipo.value)) {  
  27.         alert('Contenido del campo NOMBRE EQUIPO no válido. Debe contener solo Letras ')  
  28.         return false  
  29.     }        
  30.  
  31.         if(!descripcion.test(formulario.descripcion.value)) {  
  32.         alert('Contenido del campo DESCRIPCION no válido. Debe contener letra y numero')  
  33.         return false  
  34.     }
  35.        
  36.          if (!fechaingreso.test(formulario.fechaingreso.value)){  
  37.         alert('Contenido del campo FECHA no válido. ejemplo 2011/12/10')  
  38.         return false  
  39.     }
  40.  
  41. if (!(er_mes31dias.test(formulario.fechaingreso.value) ||
  42.                 er_mes29dias.test(formulario.fechaingreso.value) ||
  43.                 er_mes28dias.test(formulario.fechaingreso.value))) {
  44.                     alert('Contenido del campo FECHA no válido.')
  45.                       return false
  46.                       }
  47.        
  48. return true
  49.  
  50.                
  51.               //cambiar por return true para ejecutar la accion del formulario  
  52. }
  53.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Este es mi formulario
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <Form onsubmit="return validacion(this)" NAME ="FormValidacion" METHOD="POST" ACTION="guardarequipo.php">
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
carlos_82
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2012-01-06 08:45 @406

Re: Validar campos de un formulario con JavaScript desde Per

Notapor explorer » 2012-01-06 09:47 @449

Bienvenido a los foros de Perl en español, carlos_82.

La expresión regular er_mes28dias está mal terminada. Seguro que el último número no debe ser 201. Y después del '$' debería aparecer el último delimitador '/'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Validar campos de un formulario con JavaScript desde Per

Notapor carlos_82 » 2012-01-06 09:50 @451

Ya solucioné el problema, solo que me guarda la fecha en formato dd mm aaa y la necesito en yyy/ mm /dd. Este es el código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. <script language="javascript" type="text/javascript">  
  2.  
  3. function validacion(formulario) {  
  4.  
  5.   //letra, numero,
  6.       var codequipo = /^([a-zA-Z0-9_ ])+$/                      //letra, numero,  
  7.     var nombreequipo = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/  //letras, '.' y '-' o vacio  
  8.         var descripcion = /^([a-zA-Z0-9_ \s])+$/  //letras, '.' y '-' o vacio  
  9.             //fechas, formato dd/mm/aaaa o d/m/aa
  10.                
  11.                    var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
  12.             var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
  13.             var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201)$/
  14.             var er_mes29dias = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(2000|2004|2008|2012|2016|2020)$/
  15.                  for(x = 1; x < 5; x++) {  
  16.         if (formulario.elements[x].value.length > 50) {  
  17.             alert('La lontitud máxima permitida para cualquier campo es de 10 caracteres.')  
  18.             return false  
  19.         }  
  20.     }
  21.        
  22.            if(!codequipo.test(formulario.codequipo.value)) {  
  23.         alert('Contenido del campo Codequipo no válido.')  
  24.         return false  
  25.     }        
  26.   if(!nombreequipo.test(formulario.nombreequipo.value)) {  
  27.         alert('Contenido del campo NOMBRE EQUIPO no válido. Debe contener solo Letras ')  
  28.         return false  
  29.     }        
  30.  
  31.         if(!descripcion.test(formulario.descripcion.value)) {  
  32.         alert('Contenido del campo DESCRIPCION no válido. Debe contener letra y numero')  
  33.         return false  
  34.     }
  35.        
  36.  
  37. if (!(er_mes31dias.test(formulario.fechaingreso.value) ||
  38.                 er_mes29dias.test(formulario.fechaingreso.value) ||
  39.                 er_mes28dias.test(formulario.fechaingreso.value))) {
  40.                     alert('Contenido del campo FECHA no válido.')
  41.                       return false
  42.                       }
  43.        
  44. return true
  45.  
  46.                
  47.               //cambiar por return true para ejecutar la accion del formulario  
  48. }
  49.  
  50. </script>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <Form onsubmit="return validacion(this)" NAME ="FormValidacion" METHOD="POST" ACTION="guardarequipo.php">
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
carlos_82
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2012-01-06 08:45 @406

Re: Validar campos de un formulario con JavaScript desde Per

Notapor explorer » 2012-01-06 11:17 @512

Sigues teniendo el código mal. Fallará en los años 2017, 2018 y 2019.

La línea correcta es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1.             var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201[7-9])$/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Por otra parte, sería mucho mejor hacer la cuenta de cuándo un año es bisiesto:

Un año es bisiesto si es divisible entre 4, excepto el último de cada siglo (aquel divisible por 100), salvo que este último sea divisible por 400.

Así, te vale para más allá del 2020 (suponiendo que entonces siga siendo válido el calendario Gregoriano).

Para obtener la fecha correcta, debes recuperar los valores capturados por la última expresión regular evaluada, analizando el objeto RegExp. Por ejemplo, después del if() de la línea 37, suponemos que tenemos una fecha válida. Entonces solo hay que capturar sus componentes como algo como

/(\d+)\/(\d+)\/(\d+)/

y obtenerlos con

var year = RegExp.$1
var month = RegExp.$2
var day = RegExp.$3


Y entonces ya puedes reordenarlos como quieras.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Validar campos de un formulario con JavaScript desde Per

Notapor carlos_82 » 2012-01-06 11:28 @519

Será que puede ser más explicito, porque no entiendo. Soy nuevo en la programación. Solo necesito cambiar el formato de dd mm aaa para yyy mm dd. Espero su respuesta.
carlos_82
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2012-01-06 08:45 @406

Re: Validar campos de un formulario con JavaScript desde Per

Notapor carlos_82 » 2012-01-06 14:08 @631

Esto fue lo que hice pero no cambia el formato de la fecha. Le agradezco su pronta respuesta.

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. <script language="javascript" type="text/javascript">  
  2.  
  3. function validacion(formulario) {  
  4.  
  5.   //letra, numero,
  6.       var codequipo = /^([a-zA-Z0-9_ ])+$/                      //letra, numero,  
  7.     var nombreequipo = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|\.|-)+$/  //letras, '.' y '-' o vacio  
  8.         var descripcion = /^([a-zA-Z0-9_ \s])+$/  //letras, '.' y '-' o vacio  
  9.             //fechas, formato dd/mm/aaaa o d/m/aa
  10.                    var er_mes31dias = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(1999|20[0-1][0-9]|2020)$/
  11.             var er_mes30dias = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(1999|20[0-1][0-9]|2020)$/
  12.             var er_mes28dias = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(1999|200[1-3]|200[5-7]|2009|201[0-1]|201[3-5]|201[7-9])$/
  13.             var er_mes29dias = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(2000|2004|2008|2012|2016|2020)$/
  14.                        
  15.                  for(x = 1; x < 5; x++) {  
  16.         if (formulario.elements[x].value.length > 50) {  
  17.             alert('La lontitud máxima permitida para cualquier campo es de 10 caracteres.')  
  18.             return false  
  19.         }  
  20.     }
  21.        
  22.            if(!codequipo.test(formulario.codequipo.value)) {  
  23.         alert('Contenido del campo Codequipo no válido.')  
  24.         return false  
  25.     }        
  26.   if(!nombreequipo.test(formulario.nombreequipo.value)) {  
  27.         alert('Contenido del campo NOMBRE EQUIPO no válido. Debe contener solo Letras ')  
  28.         return false  
  29.     }        
  30.  
  31.         if(!descripcion.test(formulario.descripcion.value)) {  
  32.         alert('Contenido del campo DESCRIPCION no válido. Debe contener letra y numero')  
  33.         return false  
  34.     }
  35.        
  36.  
  37. if (!(er_mes31dias.test(formulario.fechaingreso.value) ||
  38.                 er_mes29dias.test(formulario.fechaingreso.value) ||
  39.                 er_mes28dias.test(formulario.fechaingreso.value))) {
  40.                     alert('Contenido del campo FECHA no válido.')
  41.                       return false
  42.                       }
  43.  
  44.  
  45.  
  46. return true
  47. var  ExpRegDate =/(\d+)\/(\d+)\/(\d+)/
  48.  
  49. var year = RegExp.$1
  50. var month = RegExp.$2
  51. var day = RegExp.$3
  52.  
  53. }
  54. </script>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-01-06 14:11 @633, editado 1 vez en total
Razón: Marcas de código JavaScript
carlos_82
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2012-01-06 08:45 @406

Siguiente

Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron