Problema con la validación de un formulario con javascript

Iniciado por janisorna, 30 Diciembre 2011, 17:36 PM

0 Miembros y 1 Visitante están viendo este tema.

janisorna

Hola a todos, he echo un formulario i ahora quiero validar sus campos pero quando le doy a enviar no me sale la alerta de que te dejas un campo por rellenar.
Aquí dejo el codigo:
Porfavor ayudadme!!!


Código (javascript) [Seleccionar]

<html>
<head>
<title>Formulario para el curso</title>
<script>
function valida_envia(){
//valido el nombre
if (document.fvalida.nombre.value.length==0){
alert("Tiene que escribir su nombre")
document.fvalida.nombre.focus()
return0;
}
//valido la edad. Tiene que ser entero mayor que 18
edad = document.fvalida.edad.value
edad = ValidarEntero(edat)
document.fvalida.edad.value=edat
if(edat==""){
alert("Tiene que indicar su edad")
document.fvalida.edad.focus()
return 0;
}else{
if (edad<18){
alert("Debe ser mayor de 18 años.")
document.fvalida.edad.focus()
return 0;
}}
//valido el correo electrónico
if (document.fvalida.email.value.length==o){
alert("Tiene que poner su correo electrónico")
document.fvalida.email.focus()
return 0;
}
//valido el teléfono móvil.
telm = document.fvalida.telm.value
telm = ValidarEntero(telm)
document.fvalida.telm.value=telm
if(telm==""){
alert("Tiene que poner su teléfono móvil")
document.fvalida.telm.focus()
return 0;
}
//valido el telefono fijo.
telf = document.fvalida.telf.value
telf = ValidarEntero(telf)
document.fvalida.telf.value=telf
if(telf==""){
alert("Tiene que poner su teléfono fijo")
document.fvalida.telf.focus()
return 0;
//valio si tienes experiencia.
if(document.fvalida.experiencia.value.length==0){
alert("Tienes que rellenar el campo de si tienes experiencia")
document.fvalida.experiencia.focus()
return 0;
}
//valio como te has enterado.
if(document.fvalida.curso.value.length==0){
alert("Tienes que rellenar el campo de com te has enterado del curso")
document.fvalida.curso.focus()
return 0;
}
//valido si tomas algún medicamento.
if(document.fvalida.medicamentos.value.length==0){
alert("Tienes que rellenar el campo de si tomas algun medicamento.")
document.fvalida.medicamentos.focus()
return 0;
}
</script>
</head>
<body>
<form name="fvalida" method="post" action="enviar2.php">
Nombre:
<input type="text" name="nombre" size="12">
<br>
<br>
Edad:
<input type="text" name="edad" size="12" maxlength="2">
<br>
<br>
Correo electrónico:
<input type="text" name="email" size="12">
<br>
<br>
Teléfono Móvil:
<input type="text" name="telm" size="12" maxlength="9">
<br>
<br>
Teléfon Fijo:
<input type="text" name="telf" size="12" maxlength="9">
<br>
<br>
<table>
<tr>
<td>
¿Tienes coche?
</td>
<td>
<input type="radio" name="coche"
value="sí">
Si.<br>
<input type="radio" name="coche"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tienes alguna experiencia?</td>
<td><textarea name="experiencia" cols="30 rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Como te has enterado del curso?</td>
<td><textarea name="curso" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td>
¿Eres Vegetariano/a?
</td>
<td>
<input type="radio" name="vegeteriano"
value="sí">
Si.<br>
<input type="radio" name="vegetariano"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tomas algún medicamento? ¿Qual?</td>
<td><textarea name="medicamentos" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<br>
<input type="button" value="Enviar" onclick="valida_envia()">
<input type="reset" value="Borrar" name="borrar">
</table>
</form>
</body>
</html>


Leyer

#1
Donde esta la funcion ValidarEntero? ademas de que tienes errores en los nombre de las variables colocaste edat y es edad. y cosas  como return0;  :xD

janisorna

#2
Cita de: Leyer en 30 Diciembre 2011, 19:16 PM
Donde esta la funcion ValidarEntero? ademas de que tienes errores en los nombre de las variables colocaste edat y es edad. y cosas  como return0;  :xD

He arreglado lo que dices pero continua sin funcionarme.

Si no lo conseguimos arreglar si alguien sabe otra forma de validarlo que lo diga porfavor :) :)

Leyer

Falta colocar la funcion validarnumero

Código (javascript) [Seleccionar]
function valida_envia(){
//valido el nombre
if (document.fvalida.nombre.value.length==0){
alert("Tiene que escribir su nombre")
document.fvalida.nombre.focus()
return 0;
}
//valido la edad. Tiene que ser entero mayor que 18
edad = document.fvalida.edad.value
if(edad==""){
alert("Tiene que indicar su edad")
document.fvalida.edad.focus()
return 0;
}else{
if (edad<18){
alert("Debe ser mayor de 18 años.")
document.fvalida.edad.focus()
return 0;
 }
}

//valido el correo electrónico
if (document.fvalida.email.value.length==0){
alert("Tiene que poner su correo electrónico")
document.fvalida.email.focus()
return 0;
}
//valido el teléfono móvil.
telm = document.fvalida.telm.value
document.fvalida.telm.value=telm
if(telm==""){
alert("Tiene que poner su teléfono móvil")
document.fvalida.telm.focus()
return 0;
}
//valido el telefono fijo.
telf = document.fvalida.telf.value
document.fvalida.telf.value=telf
if(telf==""){
alert("Tiene que poner su teléfono fijo")
document.fvalida.telf.focus()
return 0;
}
//valio si tienes experiencia.
if(document.fvalida.experiencia.value.length==0){
alert("Tienes que rellenar el campo de si tienes experiencia")
document.fvalida.experiencia.focus()
return 0;
}
//valio como te has enterado.
if(document.fvalida.curso.value.length==0){
alert("Tienes que rellenar el campo de com te has enterado del curso")
document.fvalida.curso.focus()
return 0;
}
//valido si tomas algún medicamento.
if(document.fvalida.medicamentos.value.length==0){
alert("Tienes que rellenar el campo de si tomas algun medicamento.")
document.fvalida.medicamentos.focus()
return 0;
}

}

KuraraGNU

Ahí tienes fallos de comillas abiertas pero no cerradas, fíjate que tu código se vuelve azul cuando lo posteas:

<td><textarea name="experiencia" cols="30 rows="5">

A veces son tonterías por lo que no nos salen las cosas, mira a ver si es una chorrada como esa.
<td><textarea name="experiencia" cols="30 rows='5'">

janisorna

Mirad ahora lo tengo de esta manera pero sigue sin funcionarme:

Citar
<html>
<head>
<title>Formulario para el curso</title>
<script language="javascript">
function valida_envia(form){
//valido el nombre
if (fvalida.nombre.value.length==0){
alert('Tiene que escribir su nombre');
fvalida.nombre.focus()
return 0;
}
//valido laedad
if (fvalida.edad.value.length==0){
alert('Tiene que escribir su edad');
fvalida.edad.focus()
return 0;
}
//valido el correo electrónico
if (fvalida.email.value.length==o){
alert('Tiene que poner su correo electrónico');
fvalida.email.focus()
return 0;
}
//valido el teléfono móvil.
if (fvalida.telm.value.length==0){
alert('Tiene que escribir su Teléfono Móvil');
fvalida.telm.focus()
return 0;
}
//valido el telefono fijo.
if (fvalida.telf.value.length==0){
alert('Tiene que escribir su Teléfono Fijo');
fvalida.telf.focus()
return 0;
}
//valio si tienes experiencia.
if(fvalida.experiencia.value.length==0){
alert('Tienes que rellenar el campo de si tienes experiencia');
fvalida.experiencia.focus()
return 0;
}
//valido como te has enterado.
if(fvalida.curso.value.length==0){
alert('Tienes que rellenar el campo de com te has enterado del curso');
fvalida.curso.focus()
return 0;
}
//valido si tomas algún medicamento.
if(fvalida.medicamentos.value.length==0){
alert('Tienes que rellenar el campo de si tomas algun medicamento.');
fvalida.medicamentos.focus()
return 0;
}
</script>
</head>
<body>
<form name="fvalida" method="post" action="enviar2.php" onSumbit="valida_envia(this);">
Nombre:
<input type="text" name="nombre" size="12">
<br>
<br>
Edad:
<input type="text" name="edad" size="12" maxlength="2">
<br>
<br>
Correo electrónico:
<input type="text" name="email" size="12">
<br>
<br>
Teléfono Móvil:
<input type="text" name="telm" size="12" maxlength="9">
<br>
<br>
Teléfon Fijo:
<input type="text" name="telf" size="12" maxlength="9">
<br>
<br>
<table>
<tr>
<td>
¿Tienes pareja?
</td>
<td>
<input type="radio" name="pareja"
value="sí">
Si.<br>
<input type="radio" name="pareja"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tienes alguna experiencia?</td>
<td><textarea name="experiencia" cols="30 rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Como te has enterado?</td>
<td><textarea name="curso" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td>
¿Eres Vegetariano/a?
</td>
<td>
<input type="radio" name="vegeteriano"
value="sí">
Si.<br>
<input type="radio" name="vegetariano"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tomas algún medicamento? ¿Qual?</td>
<td><textarea name="medicamentos" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<br>
<input type="submit" name="enviar" value="Enviar">
<input type="reset" value="Borrar" name="borrar">
</table>
</form>
</body>
</html>

KuraraGNU

No se si lo has conseguido arreglar, yo ya lo he arreglado, prueba esto en este orden, quizás yo hice demasiado:

1- No has cerrado corchetes de la función, abajo del todo antes de </script> te falta uno

2- No has escrito bien onSubmit, has puesto onSumbit

3- No has cerrado los "" que te dije en mi anterior mensaje.

4- Como le entras a la función valida_envia(form) En lugar de poner
(fvalida.nombre.value.length==0)
Se debería de poner
(form.nombre.value.length==0)

Pero de todas formas, aunque salga el mensaje este, se te va a la página "enviar2.php" y no hace lo del focus() (o si lo hace lo hace tan rápido que no se ve) Tienes que poner una condición para que cuando te salte la función no se te vaya a esa página.

Ten cuidado de estas pequeñas tonterías que se evitarían si mientras lo escribes tienes cuidado de lo que escribes y de que cierras todos los corchetes que abres.

janisorna

#7
Mira ahora lo he camviado un poco pero en teoria tiene que ir bien pero no me funciona:


<html>
<head>
<title>Formulario para el curso</title>
<script language="javascript">
function Valida(){
if(fvalida.nombre==""){alert('campo sin rellenar');return false;}
if(fvalida.edad==""){alert('campo sin rellenar');return false;}
if(fvalida.email==""){alert('campo sin rellenar');return false;}
if(fvalida.telm==""){alert('campo sin rellenar');return false;}
if(fvalida.telf==""){alert('campo sin rellenar');return false;}
if(fvalida.experiencia==""){alert('campo sin rellenar');return false;}
if(fvalida.curso==""){alert('campo sin rellenar');return false;}
if(fvalida.medicamentos==""){alert('campo sin rellenar');return false;}
}
</script>
</head>
<body>
<font face="arial">
<center><b><font size="5">Formulario</font></b></center>
<form name="fvalida" method="post" action="enviar2.php" onsubmit="return Valida()">
Nombre:
<input type="text" name="nombre" size="12">
<br>
<br>
Edad:
<input type="text" name="edad" size="12" maxlength="2">
<br>
<br>
Correo electrónico:
<input type="text" name="email" size="12">
<br>
<br>
Teléfono Móvil:
<input type="text" name="telm" size="12" maxlength="9">
<br>
<br>
Teléfon Fijo:
<input type="text" name="telf" size="12" maxlength="9">
<br>
<br>
<table>
<tr>
<td>
¿Tienes pareja?
</td>
<td>
<input type="radio" name="pareja"
value="sí">
Si.<br>
<input type="radio" name="pareja"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tienes alguna experiencia?</td>
<td><textarea name="experiencia" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Como te has enterado?</td>
<td><textarea name="curso" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<table>
<tr>
<td>
¿Eres Vegetariano/a?
</td>
<td>
<input type="radio" name="vegeteriano"
value="sí">
Si.<br>
<input type="radio" name="vegetariano"
value="no">
No.<br>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td colspan="2" valign="top">
¿Tomas algún medicamento? ¿Qual?</td>
<td><textarea name="medicamentos" cols="30" rows="5">
</textarea>
</td>
</tr>
</table>
<br>
<br>
<br>
<input type="submit" name="enviar" value="Enviar">
<input type="reset" value="Borrar" name="borrar">
</table>
</form>
</font>
</body>
</html>

Leyer


janisorna

Cita de: Leyer en  3 Enero 2012, 19:46 PM
:¬¬
valida.nombre.value

Muchisimas gracias porfin me funciona correctamente!!!!!!!!!!  :laugh: ;D :laugh: