Foros del Web » Programando para Internet » Javascript »

Problema simple con comparacion de contraseñas

Estas en el tema de Problema simple con comparacion de contraseñas en el foro de Javascript en Foros del Web. Hola a todos, estoy validando un formulario y tengo un problema al tratar de ver si las contraseñas son iguales. Código PHP: function  validar ( ...
  #1 (permalink)  
Antiguo 18/02/2010, 18:11
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 853
Antigüedad: 12 años, 7 meses
Puntos: 6
Problema simple con comparacion de contraseñas

Hola a todos, estoy validando un formulario y tengo un problema al tratar de ver si las contraseñas son iguales.

Código PHP:
function validar(formulario) {
if (
formulario.nombreyapellido.value.length 4) {
alert("Nombre y apellido demaciado corto");
formulario.nombreyapellido.focus();
return (
false);
}
var 
checkOK "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" "abcdefghijklmnñopqrstuvwxyzáéíóú ";
var 
checkStr formulario.nombreyapellido.value;
var 
allValid true;
for (
0checkStr.lengthi++) {
ch checkStr.charAt(i);
for (
0checkOK.lengthj++)
if (
ch == checkOK.charAt(j))
break;
if (
== checkOK.length) {
allValid false;
break;
}
}
if (!
allValid) {
alert("Tu nombre y apellido solo pueden llevar letras");
formulario.nombreyapellido.focus();
return (
false);
}
if (
formulario.nick.value.length 4) {
alert("Nick demaciado corto");
formulario.nick.focus();
return (
false);
}

if (
formulario.pass.value.length != formulario.pass2.value.length) {
alert("Nick demaciado corto");
formulario.pass.focus();
return (
false);
}

return (
true);

Todo funciona bien menos:
Código PHP:
if (formulario.pass.value.length != formulario.pass2.value.length) {
alert("Nick demaciado corto");
formulario.pass.focus();
return (
false);

Que es lo que hago mal?
  #2 (permalink)  
Antiguo 18/02/2010, 18:38
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 10 años, 7 meses
Puntos: 1485
Respuesta: Problema simple con comparacion de contraseñas

¿cual es el problema que te produce y cual es el resultado que esperas? por otro lado, estoy viendo que estas comparando las longitudes de ambos campos. es decir, en un campo puedo entrar manu y en otro maaf y el script entendera que esta todo bien pese a ser distintos valores. para comparar ambas cadenas debes comparar por valor y no por longitud. simplemente quita length.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 18/02/2010, 18:47
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 853
Antigüedad: 12 años, 7 meses
Puntos: 6
Respuesta: Problema simple con comparacion de contraseñas

Ya le quite los length, el problema es sean o no iguales me devuelve true.
  #4 (permalink)  
Antiguo 18/02/2010, 19:15
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Problema simple con comparacion de contraseñas

Creo que te equivocaste de mensaje de error:

estas poniendo "Nick demaciado corto" cuando en realidad estas validando que sean iguales...

Y otro detallito... demasiado
  #5 (permalink)  
Antiguo 19/02/2010, 11:00
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 9 años, 10 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
  #6 (permalink)  
Antiguo 19/02/2010, 11:00
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 853
Antigüedad: 12 años, 7 meses
Puntos: 6
Respuesta: Problema simple con comparacion de contraseñas

No pude arreglar lo de las contraseñas no entiendo por que, pero ahora otra duda ¿Como colo php dentro del javascript? Por que quiero un control para ver si el usuario que se esta registrando ya esta dentro de la base de datos. Muchas gracias

Etiquetas: comparacion, contraseñas, simple
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:13.