Foros del Web » Programando para Internet » Javascript »

problemas con funciones

Estas en el tema de problemas con funciones en el foro de Javascript en Foros del Web. Hola. Quiero validar los datos que el usuario ingresa en el formulario pero no cuando inserto la funcion validar_email() en el script todo deja de ...
  #1 (permalink)  
Antiguo 15/07/2010, 07:39
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
problemas con funciones

Hola.
Quiero validar los datos que el usuario ingresa en el formulario pero no cuando inserto la funcion validar_email() en el script todo deja de funcionar.
¿cual puede ser el problema (les dejo el codigo)? GRACIAS.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Red</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />

<script>

function valida_envia(){

//valido que ningun campo quede vacio.
if (document.usuario.nom_us.value.length==0){
alert("Tiene que escribir su nombre")
document.usuario.nom_us.focus()
return 0;
}else if (document.usuario.ape_us.value.length==0){
alert("Tiene que escribir su apellido")
document.usuario.ape_us.focus()
return 0;
}else if (document.usuario.nick_us.value.length==0){
alert("Tiene que escribir su nombre de usuario ó nick")
document.usuario.nick_us.focus()
return 0;
}else if (document.usuario.pass_us.value.length==0){
alert("Tiene que escribir una clave")
document.usuario.pass_us.focus()
return 0;
}else if (document.usuario.repit_pass_us.value.length==0){
alert("Es necesario corroborar la clave, por favor escribala nuevamente")
document.usuario.repit_pass_us.focus()
return 0;
}

//================================================== ================================================== ===============================
//valido que se elija un tipo de documento.
if (document.usuario.tipodoc.selectedIndex==0){
alert("Debe seleccionar su tipo de documento")
document.usuario.tipodoc.focus()
return 0;
}
//================================================== ================================================== ===============================
//llamo a la funcion validarEmail() y le paso el parametro (valor) para validar el mail del usuario
var valor = document.usuario.email_us.value;
validar_email(valor)

//================================================== ================================================== ===============================
//el formulario se envia
alert("Muchas gracias por enviar el formulario");
document.usuario.submit();
}//Fin de la funcion valida_envia()

function validar_email(valor) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
alert(”La dirección de email ” + valor + ” es correcta.”)
return 0;
} else {
alert(”La dirección de email es incorrecta.”);
document.usuario.email_us.focus()
return 0;
}
}

</script>
</head>

<body>

ALTA DE USUARIO
<form name="usuario" id="id_usuario" action="p_alta_us.php" method="POST">
<p>Nombre:
<label>
<input type="text" name="nom_us" value="" id="nom"/>
</label>
</p>
<p>Apellido:
<label>
<input type="text" name="ape_us" value="" id="ape_us"/>
</label>
</p>

<p>Nick: <!-- falta corrobar el nick mientras se escribe-->
<label>
<input type="text" name="nick_us" value="" id="nick_us"/>
</label>
</p>
<p>Clave:
<label>
<input type="pass" name="pass_us" value="" id="pass_us"/>
</label>
</p>

<p>Repita la Clave:
<label>
<input type="pass" name="repit_pass_us" value="" id="repit_pass_us"/>
</label>
</p>

<p>E-mail:
<label>
<input type="text" name="email_us" value="" id="email_us"/>
</label>
</p>

<p>Número:
<label>
<input type="text" name="numdoc_us" value="" id="numdoc_us"/>
</label>
</p>

<label>
<td colspan="2" align="center"><input type="button" value="Enviar" onclick="valida_envia()"></td>
</label>
</form>

</head>
<body>
  #2 (permalink)  
Antiguo 15/07/2010, 08:02
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: problemas con funciones

Hola

¿Y cual es el error?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 15/07/2010, 09:22
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: problemas con funciones

no anda nada, cuando agrego la funcion validar_emai() al codigo, simplemente deja de funcionar todo el codigo javascript ,(Html sigue andando).
  #4 (permalink)  
Antiguo 15/07/2010, 09:31
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: problemas con funciones

Si pones el error que te aparece pues seria mas facil ayudarte. Ademas, es mas facil para los demas leer el codigo si lo pones entre [ CODE ] [ /CODE ] para darle formato

Sobre esta parte del codigo:
Código:
//valido que se elija un tipo de documento.
if (document.usuario.tipodoc.selectedIndex==0){
alert("Debe seleccionar su tipo de documento")
document.usuario.tipodoc.focus()
return 0;
}
No se cuales opciones tienes en tu SELECT, tal vez la primera opcion tiene texto vacio o un guion (o algo asi) y tal vez es el comportamiento que quieres, pero cuando ninguna opcion esta seleccionada selectedIndex es -1
  #5 (permalink)  
Antiguo 15/07/2010, 10:20
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: problemas con funciones

Saqué la parte que evalua en tipo de documento porque lo tengo echo en php y NO en html.
y puse todo entre [ CODE ] [ /CODE ] para darle formato.
En realidad no me da ningun error, simplemente no hace nada, se imprime todo lo que es HTML pero las funciones no hacen nada, no evalua nada ni me redirecciona a "p_alta_us.php"
como le puse en "action" del form.

[ CODE ]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Red</title>
<meta http-equiv="Content-Language" content="English" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />

<script>

function valida_envia(){

//valido que ningun campo quede vacio.
if (document.usuario.nom_us.value.length==0){
alert("Tiene que escribir su nombre")
document.usuario.nom_us.focus()
return 0;
}else if (document.usuario.ape_us.value.length==0){
alert("Tiene que escribir su apellido")
document.usuario.ape_us.focus()
return 0;
}else if (document.usuario.nick_us.value.length==0){
alert("Tiene que escribir su nombre de usuario ó nick")
document.usuario.nick_us.focus()
return 0;
}else if (document.usuario.pass_us.value.length==0){
alert("Tiene que escribir una clave")
document.usuario.pass_us.focus()
return 0;
}else if (document.usuario.repit_pass_us.value.length==0){
alert("Es necesario corroborar la clave, por favor escribala nuevamente")
document.usuario.repit_pass_us.focus()
return 0;
}

//================================================== ================================================== ===============================
//llamo a la funcion validarEmail() y le paso el parametro (valor) para validar el mail del usuario
var valor = document.usuario.email_us.value;
validar_email(valor)

//================================================== ================================================== ===============================
//el formulario se envia
alert("Muchas gracias por enviar el formulario");
document.usuario.submit();
}//Fin de la funcion valida_envia()

function validar_email(valor) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
alert(”La dirección de email ” + valor + ” es correcta.”)
return 0;
} else {
alert(”La dirección de email es incorrecta.”);
document.usuario.email_us.focus()
return 0;
}
}

</script>
</head>

<body>

ALTA DE USUARIO
<form name="usuario" id="id_usuario" action="p_alta_us.php" method="POST">
<p>Nombre:
<label>
<input type="text" name="nom_us" value="" id="nom"/>
</label>
</p>
<p>Apellido:
<label>
<input type="text" name="ape_us" value="" id="ape_us"/>
</label>
</p>

<p>Nick: <!-- falta corrobar el nick mientras se escribe-->
<label>
<input type="text" name="nick_us" value="" id="nick_us"/>
</label>
</p>
<p>Clave:
<label>
<input type="pass" name="pass_us" value="" id="pass_us"/>
</label>
</p>

<p>Repita la Clave:
<label>
<input type="pass" name="repit_pass_us" value="" id="repit_pass_us"/>
</label>
</p>

<p>E-mail:
<label>
<input type="text" name="email_us" value="" id="email_us"/>
</label>
</p>

<p>Número:
<label>
<input type="text" name="numdoc_us" value="" id="numdoc_us"/>
</label>
</p>

<label>
<td colspan="2" align="center"><input type="button" value="Enviar" onclick="valida_envia()"></td>
</label>
</form>

</head>
<body>
[ /CODE ]
  #6 (permalink)  
Antiguo 15/07/2010, 11:26
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: problemas con funciones

Se me olvido mencionar que el [ CODE ] y [ /CODE ] deben ir sin los espacios interiores (lo tuve que poner asi para que se pudiera ver como texto en el post)

No creo que sea la causa del error, pero te falta poner </body> al final del codigo HTML

Una cosa mas. No se si es cosa del editor que use para revisar tu codigo o fue cosa del codigo que pegaste, pero en los alert de la funcion validar_email parece que no son comillas dobles como las que utilizas en los demas alert
  #7 (permalink)  
Antiguo 15/07/2010, 11:59
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: problemas con funciones

Capo !!!!

Tenias razon, en vez de comillas puse cualquier cosa.

me re-ayudaste, acomode el codigo, y ahora onda todo, GRACIAS !!!!!

Etiquetas: funciones
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 03:10.