Foros del Web » Programando para Internet » Javascript »

Validar ESTE formulario...

Estas en el tema de Validar ESTE formulario... en el foro de Javascript en Foros del Web. Hola: Por sugerencia de alguien en este mismo foro, note que mi formulario se puede enviar vacio. Estoy tratando de validarlo antes de enviar pero ...
  #1 (permalink)  
Antiguo 24/12/2005, 11:56
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Validar ESTE formulario...

Hola:

Por sugerencia de alguien en este mismo foro, note que mi formulario se puede enviar vacio.

Estoy tratando de validarlo antes de enviar pero como ya tiene un script al hacer onclick, se me ha complicado.

Les pongo el codigo del formulario a ver si alguien me da una mano para validar "no vacio" los campos de texto (nombre, email) el select (contactar) y el campo de texto (mensaje)

El script que tengo en uso es de listas dependientes para pais y estado, con php y mysql

el archivo del formulario - contacto.php
Código PHP:
<form id="contacto" name="contacto" method="post" action="">
                        <table width="315" border="0" cellpadding="2">
                                    <tr>
                                      <td><div align="left">Nombre</div></td>
                                      <td>&nbsp;</td>
                                      <td class="form"><div align="left"><? echo "<input name=\"nombre\" id=\"nombre\" type=\"text\" class=\"form\" value=\"$nombre\" size=\"30\">"?> *</div></td>
                                    </tr>
                                    <tr>
                                      <td><div align="left">E-mail</div></td>
                                      <td>&nbsp;</td>
                                      <td class="form"><div align="left"><? echo "<input name=\"email\" id=\"email\" type=\"text\" class=\"form\" value=\"$email\" size=\"30\">"?> *</div></td>
                                    </tr>
                                    <tr>
                                      <td><div align="left">Pa&iacute;s</div></td>
                                      <td>&nbsp;</td>
                                      <td class="form"><div align="left">
                                          <? 
// datos de conexion a la BD. 
$servidor "xxxxxx"// host 
$usuario "xxxxxx"
$clave "xxxxxx"
$basedatos "xxxxxx"// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser 
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda. 

if (!empty($_POST['enviado'])){ 

// Procesar el formulario ... 
echo "Procesando formulario:<br>"
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>"
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija']."<br>"
 

} else { 

// Conexi&oacute;n a la BD 
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error()); 
mysql_select_db($basedatos$conexion) or die(mysql_error()); 

// Obtener el $id_padre del envio a si mismo del formulario .. 
if(isset($_POST['id_padre'])){ 
$id_padre=$_POST['id_padre']; 


if(isset(
$_POST['id_hija'])){ 
$id_hija=$_POST['id_hija']; 


// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script). 
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n"

// Formar Selec "Padre". 
echo "<select name=\"id_padre\" class=\"select\" onChange=\"this.form.submit()\">\n"
echo 
"<option value=\"\"> Seleccione </option>\n"

$SQLconsulta_padre="SELECT * FROM countries"
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error()); 

While (
$registro_padre=mysql_fetch_assoc($consulta_padre )){ 
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo. 
// Se selecciona en consecuencia (selected) la opci&oacute;n elegida. 
if ($id_padre == $registro_padre['country_id']){ 
echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"


echo 
"</select>\n\n"

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.?>
                                      </div></td>
                                    </tr>
                                    <tr>
                                      <td><div align="left">Regi&oacute;n</div></td>
                                      <td>&nbsp;</td>
                                      <td class="form"><div align="left">
                                          <?
                        
// Formar Select "Hijo" 
echo "<select name=\"id_hija\" class=\"select\" onChange=\"this.form.submit()\">\n"

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
// se muestra el mensaje de "seleccine un item" (del select padre). 
if (!empty($id_padre)){ 

$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$id_padre'"
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error()); 
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select .. 
if (mysql_num_rows($consulta_hija) != 0){ 
While (
$registro_hija=mysql_fetch_assoc($consulta_hija)) { 
//echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"; 
if ($id_hija == $registro_hija['state_id']){ 
echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"




} else { 
echo 
"<option value=\"\"> no hay registros </option>"

} else { 
echo 
"<option value=\"\"> Seleccione primero el pa&iacute;s</option>"


mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 


echo "</select>\n\n"
 

?>
                                      </div></td>
                                    </tr>
                                    <tr>
                                      <td><div align="left">Contactar</div></td>
                                      <td>&nbsp;</td>
                                      <td><div align="left">
                                          <select name="contactar" class="select" id="contactar">
                                            <option value="null" selected="selected"> Seleccione </option>
                                            <option value="[email protected]">Asistencia T&eacute;cnica</option>
                                            <option value="[email protected]">Atenci&oacute;n al Cliente</option>
                                            <option value="[email protected]">Mercadeo y Ventas</option>
                                            <option value="[email protected]">Webmaster</option>
                                          </select>
                                      *</div></td>
                                    </tr>
                                    <tr>
                                      <td><div align="left">Mensaje </div></td>
                                      <td>&nbsp;</td>
                                      <td><div align="left">
                                          <textarea name="mensaje" cols="38" rows="3" class="form" id="mensaje"></textarea>
                                      *</div></td>
                                    </tr>
                                    <tr>
                                      <td colspan="3"><div align="center">
                                          <input type="submit" name="Submit" class="boton" value="Enviar" onclick="this.form.action='mensaje.php'; this.form.submit()" />
                                      </div></td>
                                    </tr>
                                    </table>
                              </form>
  #2 (permalink)  
Antiguo 24/12/2005, 15:42
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
<script>
function validar(f){
if(f.nombre.value==""){
alert("Debe ingresar Nombre");f.nombre.focus();return false;
}
if(f.email.value==""){
alert("Debe ingresar Email");f.email.focus();return false;
}
if(f.contactar.value==""){
alert("Debe ingresar Contactar");f.contactar.focus();return false;
}
if(f.mensaje.value==""){
alert("Debe ingresar Mensaje");f.mensaje.focus();return false;
}
return true;

}</script>
y dentro de las etiquetas FORM:
Cita:
onsubmit="return validar(this)"
adicionalmente podés verificar que la direccion de e-mail sea válida(contenga @ y . , ademas de otras yerbas) . Para eso busca en este foro que hay varios ejemplos de validacion utilizando Expresiones Regulares.

suerte
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 24/12/2005, 15:43
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias Cap.Buscapina... voy a probarlo
  #4 (permalink)  
Antiguo 24/12/2005, 15:52
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Listo, ya lo probe.

Funciona, pero tiene el siguiente error:

si envio en blanco, se abre una ventanita de windows que indica el error. hasta alli bien. PERO, cuando haces click en el boton aceptar de la ventanita que dice por ejemplo, debe ingresar su nombre, se cierra la ventanita pero me envia el formulario.
  #5 (permalink)  
Antiguo 25/12/2005, 15:26
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
que raro, lo prové antes de postearlo y funcaba bien. Por que no pones el script como te quedo(si es que lo modificaste) y ademas la parte del formulario (ya el resultado luego de ejecutarse el php en el servidor).

saludos
__________________
by Capitán Buscapina
.
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:26.