¡Hola!
Tengo un problemilla en la validación de un formulario html y no sé cómo solucionarlo. Normalmente las validaciones se realizan con JavaScript en el cliente, pero yo necesito verificar que un campo del formulario no esté en mi base de datos, por lo que tengo que usar CGI. Buscando información, he visto que CGI::Ajax me puede ayudar, pero me he quedado en un punto que no sé cómo seguir.
El problema está en que llamo a la función de validación con el evento onClick, si el formato de los campos es erróneo consigo que aparezca el mensaje de error, pero cuando los datos son válidos, no puedo redirigirme a la página que indico en <form action="http://url.ejemplo.com"> porque la función tiene un return false.
He probado a utilizar el evento onChange, pero así no me garantiza que al pulsar el botón submit, estén todos los datos correctos.
Este es el código que tengo (la parte de conexión con la base de datos no la he añadido todavía porque quiero asegurarme de que esto me funcione). Es el mismo código que está en el tutorial de Ajax, simplemente he modificado el formulario y el evento.
[syntax="perl"]#!/usr/bin/perl -w
use strict;
use CGI;
use lib qw(/usr/local/lib/perl5/site_perl/5.8.8/);
use CGI::Ajax;
my $cgi = new CGI;
my $PWD_CORRECTO = "perl";
#Creamos un nuevo objeto AJAX
# y asociamos una función
my $pjx = new CGI::Ajax( 'checar_pwd' => \&checar_pwd );
# Desplegamos el HTML
print $pjx->build_html( $cgi, \&mostrar_formulario);
sub checar_pwd{
#Recibimos los datos envíados
my $entrada = shift;
if($entrada eq ""){
return("Introduzca un nombre para el proyecto");
}
if($entrada eq $PWD_CORRECTO){
return("true");
}
else {
#return("El nombre del proyecto es incorrecto");
}
}
sub mostrar_formulario{
my $html = <<EOHTML;
<HTML>
<BODY>
<FORM action="http://pc-4-111.uc3m.es/cgi-bin/cargarBD.cgi"
enctype="multipart/form-data"
method="post">
Nombre del proyecto
<input type="text" name="nombre" id="nombre">
Cargar archivo txt
<input name="archivo" type="file">
<input type="radio" name="gestores" value="oracle" CHECKED>Oracle
<input type="radio" name="gestores" value="mysql">MySQL
<input value="confirmar" name="choice"
type="submit" onClick="checar_pwd( ['nombre'], ['resultado'] ); return false;"
</FORM>
<div id="resultado"></div>
<p>
</BODY>
</HTML>
EOHTML
return $html;
}[/synt]
¡Muchas gracias por todo!