Foros del Web » Programando para Internet » Javascript »

Problema con formulario JS

Estas en el tema de Problema con formulario JS en el foro de Javascript en Foros del Web. Hola a todos; mi problema es que estoy intentando validar un formulario en JS; el problema es que tengo 6 campos para validar; pero me ...
  #1 (permalink)  
Antiguo 22/09/2011, 17:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 52
Antigüedad: 12 años, 8 meses
Puntos: 0
Exclamación Problema con formulario JS

Hola a todos; mi problema es que estoy intentando validar un formulario en JS; el problema es que tengo 6 campos para validar; pero me valida uno a la vez; es decir, supongan que tenemos un campo nick y otro contraseña; las condiciones serían que si nick es menor a 3, devuelva falso y que si contraseña es menos a 5 devuelva false y en los dos casos se vea un error; el punto es que si en nick ponemos dos caracteres (error) y en contraseña ponemos menos de 5 caracteres (error), solo salta el error del nick, pero una vez que se ingresa más de 3 caracteres en el nick, recien ahí salta el error de la conrtaseña.
Me gustaría que me ayuden a que los errores salgan todos a la vez; muchas gracias:

HTML:

<form name="inicioRegistro" id="incioRegistro" method="post" action="procesar_usuario.php" onsubmit="return validar()">
<table>
<tr>
<td><p align="right">Nick: </p></td>
<td height="40px"><input type="text" name="nick" height="30px" id="nick"/></td>
<td><p id="nm3" style="visibility:hidden; display:none; color:red; font-family:Arial, Helvetica, sans-serif;">El nick debe constar de más de 3 cifras.</p></td>
</tr>
<tr>
<td><p align="right">Nombre: </p></td>
<td height="40px"><input type="text" name="nombre" id="nombre"/></td>
</tr>
<tr>
<td><p align="right">Apellidos: </p></td>
<td height="40px"><input type="text" name="apellido" id="apellido"/></td>
</tr>
<tr>
<td><p align="right">Password: </p></td>
<td height="40px"><input type="password" name="contraseña" id="contraseña"/></td>
<td><p id="ccl" style="visibility:hidden; display:none; color:red; font-family:Arial, Helvetica, sans-serif;">La contraseña debe de constar de un mínimo de 5 carácteres y un máximo de 16</p></td>
</tr>
<tr>
<td><p align="right">Repetir password: </p></td>
<td height="40px"><input type="password" name="contraseña2" id="contraseña2"/></td>
<td><p id="cnc" style="visibility:hidden; display:none; color:red; font-family:Arial, Helvetica, sans-serif;">Las contraseñas deben de coincidir.</p></td>
</tr>
<tr>
<td><p align="right">Email: </p></td>
<td height="40px"><input type="text" name="email" id="email"/></td>
</tr>
<tr>
<td><input type="submit" value="registrate"/></td>
</tr>
</table>
</form>



JS:

<script language="javaScript">
function validar(){
var nick= document.getElementById('nick');
var nombre= document.getElementById('nombre');
var apellido= document.getElementById('apellido');
var contraseña= document.getElementById('contraseña');
var contraseña2= document.getElementById('contraseña2');
var email= document.getElementById('email');

if(nick.value.length<3){
document.getElementById('nm3').style.visibility='v isible';
document.getElementById('nm3').style.display='bloc k';
return false;
}
else
if(contraseña.value.length<5){
document.getElementById('ccl').style.visibility='v isible';
document.getElementById('ccl').style.display='bloc k';
return false;
}
else
if (contraseña.value!=contraseña2.value){
document.getElementById('cnc').style.visibility='v isible';
document.getElementById('cnc').style.display='bloc k';
return false;
}
return true;
}
</script>



Muchas gracias a todos, espero respuestas.
  #2 (permalink)  
Antiguo 22/09/2011, 18:01
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema con formulario JS

buenas,
debes realizar todas las comprobaciones sin clausula else. else se interpreta si la condición de if no coincide. hay varias formas de hacerlo y organizarlo. la forma más básica es crear una variable booleana el cual devolverás al final. dicha variable cambia de estado cuando una de las condiciones if no coincide.
Código:
function foo(){
var isValid = true;
if(condition){
...
isValid = false;
}

if(condition){
...
isValid = false;
}

...
return isValid;
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 22/09/2011, 18:09
 
Fecha de Ingreso: septiembre-2011
Mensajes: 52
Antigüedad: 12 años, 8 meses
Puntos: 0
Exclamación Respuesta: Problema con formulario JS

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
debes realizar todas las comprobaciones sin clausula else. else se interpreta si la condición de if no coincide. hay varias formas de hacerlo y organizarlo. la forma más básica es crear una variable booleana el cual devolverás al final. dicha variable cambia de estado cuando una de las condiciones if no coincide.
Código:
function foo(){
var isValid = true;
if(condition){
...
isValid = false;
}

if(condition){
...
isValid = false;
}

...
return isValid;
}

Gracias loco, sos un capo, el mejor, me sirvió el código. Muchisimas gracias (:
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 22:27.