Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/02/2010, 11:00
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 11 meses
Puntos: 45
Respuesta: Problema simple con comparacion de contraseñas

Buenas,

para ser exactos en este trozo de código:

Código Javascript:
Ver original
  1. if (formulario.pass.value.length != formulario.pass2.value.length)
  2. {
  3.           alert("Nick demaciado corto");
  4.           // mas código
  5. }

lo que está comparando es la longitud de las dos cadenas contenidas en la propiedad value de los campos pass, así que lo de nick tampoco parece tener mucho sentido. Y como el alert solo se ejecutará cuando sean de distinta longitud está claro que una será mas corta que la otra siempre. Poner nombres de variable y mensajes coherentes ayuda bastante, y conviene incluir comentarios. Además es la única comparación que haces con esos campos que no servirá de mucho como te ha dicho zerokilled.

De lo que comentas de que siempre te devuelve true, te comento un par de errores en el código:


Código Javascript:
Ver original
  1. for (j = 0; j < checkOK.length; j++)
  2. {      // te falta cerrar esta llave
  3.  
  4.        if (ch == checkOK.charAt( j ) ) break;
  5.  
  6.        if (j == checkOK.length)      // este if nunca se ejecuta
  7.        {
  8.                allValid = false;            // allValid sigue siendo true
  9.                break;
  10.        }
  11. }
  12.  
  13. if (!allValid) {          // este tampoco

y no se ejecuta por dos razones: por la condición del for, j nunca llegaría a ser igual a length y además porque el último caracter de una cadena es length -1 no el que usas en la comparación del if del for .

Como ya te ha dicho zerokilled las cadenas por defecto se comparan por valor y caracter a caracter y solo son iguales si tienen el mismo contenido y la misma longitud, así que no te hacen falta los for aninados, simplemente compara las cadenas