Foros del Web » Programando para Internet » Javascript »

Permitir como mínimo una letra Mayúscula, una minúscula y números

Estas en el tema de Permitir como mínimo una letra Mayúscula, una minúscula y números en el foro de Javascript en Foros del Web. Hola que tal estoy haciendo un autentificador el en cual el campo del password debe de contener como mínimo 5 caracteres, entre esos 5 caracteres ...
  #1 (permalink)  
Antiguo 26/01/2005, 17:03
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
Permitir como mínimo una letra Mayúscula, una minúscula y números

Hola que tal estoy haciendo un autentificador el en cual el campo del password debe de contener como mínimo 5 caracteres, entre esos 5 caracteres debe de haber como mínimo una letra mayúscula, una minúscula y números, deseo saber como puedo hacer eso con un javascript y que se valide antes de enviar el formulario con un <input type=button>

De ante mano muchas Gracias por su ayuda.
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #2 (permalink)  
Antiguo 26/01/2005, 18:40
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, cyber
Ahí va:
Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function valida(tx)
{	var nMay = 0, nMin = 0, nNum = 0
	var t1 = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"
	var t2 = "abcdefghijklmnñopqrstuvwxyz"
	var t3 = "0123456789"
	for (i=0;i<tx.length;i++) {
		if ( t1.indexOf(tx.charAt(i)) != -1 ) {nMay++}
		if ( t2.indexOf(tx.charAt(i)) != -1 ) {nMin++}
		if ( t3.indexOf(tx.charAt(i)) != -1 ) {nNum++}
	}
	if ( nMay>0 && nMin>0 && nNum>0 ) { return true }
	else { return false }
}
</script>
</head>

<body>
<form>
<input type="text" name="texto1">
<input type="button" value="Validar" onClick="alert(valida(this.form.texto1.value))">
</form>
</body>
</html> 
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 26/01/2005, 20:15
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
Perfecto funciona de maravilla, sin embargo tambien deseo que se introduscan como minimo 5 caracteres, cosa que no se tampoco como hacerla y dicho javascript no lo hace , si serian tan amables de decirme que debo de modificar.

Este es el codigo arreglado de acuerdo a mis necesidades.
Código HTML:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function valida(tx) 
{ 
	var nMay = 0, nMin = 0, nNum = 0 
	var t1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
	var t2 = "abcdefghijklmnopqrstuvwxyz" 
	var t3 = "0123456789" 
		for (i=0;i<tx.length;i++) { 
			if ( t1.indexOf(tx.charAt(i)) != -1 ) {nMay++} 
			if ( t2.indexOf(tx.charAt(i)) != -1 ) {nMin++} 
			if ( t3.indexOf(tx.charAt(i)) != -1 ) {nNum++} 
		} 
		if ( nMay>0 && nMin>0 && nNum>0 ) 
		form.submit()
		else 
		{ alert("Su password debe contener minimo 5 caracteres alfanumericos"); form.texto1.focus(); return; }
} 
</script>
</head> 
<body> 
<form name="form" action="algo.php" method="post"> 
<input type="password" name="texto1"> 
<input type="button" value="Validar" onClick="valida(this.form.texto1.value)"> 
</form> 
</body>
</html> 
dESDE YA UN MILLON DE gRACIAS.
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #4 (permalink)  
Antiguo 26/01/2005, 21:09
 
Fecha de Ingreso: enero-2005
Mensajes: 92
Antigüedad: 19 años, 3 meses
Puntos: 0
Mira, en el ejemplo, en el script se recibe el contenido de lo que escribió en la variable tx, y la propiedad length obtiene el numero de caracteres de la variable, podrias poner:

Código:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function valida(tx) 
{ 
	var nMay = 0, nMin = 0, nNum = 0 
	var t1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
	var t2 = "abcdefghijklmnopqrstuvwxyz" 
	var t3 = "0123456789"
                   if (tx.length < 5) {
                            alert("Su password, debe tener almenos 5 letras");
                   } else {
                          //Aqui continua si la variable ya tiene mas de 5 letras
               	for (i=0;i<tx.length;i++) { 
			if ( t1.indexOf(tx.charAt(i)) != -1 ) {nMay++} 
			if ( t2.indexOf(tx.charAt(i)) != -1 ) {nMin++} 
			if ( t3.indexOf(tx.charAt(i)) != -1 ) {nNum++} 
		} 
		if ( nMay>0 && nMin>0 && nNum>0 ) 
		form.submit()
		else 
		{ alert("Su password debe contener minimo 5 caracteres alfanumericos"); form.texto1.focus(); return; }
}
} 
</script>
</head> 
<body> 
<form name="form" action="algo.php" method="post"> 
<input type="password" name="texto1"> 
<input type="button" value="Validar" onClick="valida(this.form.texto1.value)"> 
</form> 
</body>
</html>
  #5 (permalink)  
Antiguo 26/01/2005, 21:30
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
Hay alguna forma de no usar en este script la propiedad length, ya que dicha propiedad la estoy usando en otro script de alcance global y me he dado cuenta que al ponerla en el codigo de mi pagina se me genera errores porque dicha propiedad length esta ya en uso en un contador de for en el script de alcanse global.

Y gracias novatillo por tu gran ayuda y tambien a angsanchez.

__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #6 (permalink)  
Antiguo 27/01/2005, 06:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola, aquí te paso una función que valida lo que necesitas con expresiones regulares. Tambien modularice el código para que fuera más simple y prolijo.

Código HTML:
<html>
	<head>
		<script type="text/javascript">
			function validarCodigo(codigo)
			{
				var re = /^[a-z\d]{5}$/i;
				var nre = /^([A-Z]{5}|[a-z]{5}|\d{5}|[A-Z\d]{5}|[A-Za-z]{5}|[a-z\d]{5})$/;
				return (re.test(codigo) && !nre.test(codigo));
			}
			
			function validarFormulario()
			{
				var formulario = document.forms['frmPrincipal'];
				var clave = formulario['clave'];	
				var strError = '';
				var focusError = null
				
				if(!strError && !validarCodigo(clave.value))
				{
					strError = 'Su password debe contener minimo 5 caracteres alfanumericos';
					focusError = clave;
				}
				
				// Aquí se validan el resto de los campos (en caso de que existan)
			
				if(strError)
				{
					alert(strError);
					if(focusError!=null) focusError.focus();
				}
				return (''==strError);
			}
		</script>
	</head>
	<body>
		<form name="frmPrincipal" action="algo.php" method="POST" onsubmit="return validarFormulario()">
			<input type="password" name="clave" maxlength="5" size="5"> 
			<input type="submit" value="Validar">
		</form> 
	</body>
</html> 
Saludos

Última edición por Ktion; 27/01/2005 a las 06:06
  #7 (permalink)  
Antiguo 27/01/2005, 13:39
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Muy bueno, Ktion Lo de las expresiones regulares me supera.
Pero, ¡cuidado!:
prolijo, ja.
(Del lat. prolīxus).
1. adj. Largo, dilatado con exceso.
2. adj. Cuidadoso o esmerado.
3. adj. Impertinente, pesado, molesto.
Real Academia Española © Todos los derechos reservados


Cyber, no creo que lo del length te pueda dar ningún problema, pues no es una variable sino una propiedad de cada objeto.
__________________
Angel :cool:

Última edición por angsanchez; 27/01/2005 a las 13:40
  #8 (permalink)  
Antiguo 27/01/2005, 14:00
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
La verdad que he quedado Sorprendido muy bonito la verdad te pasastes Ktion
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #9 (permalink)  
Antiguo 27/01/2005, 15:00
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
LA verdad que pense que estaba todo listo pero me he dado cuenta que ell scritp solo acepta 5 caracteres y no mas de eso, me gustaria que aceptara mas de 5 no solo 5 ni menos que 5 caracteres alfanumericos si serian tan amable de ayudarme para saber que es lo que debo de modificar en este script
Código HTML:
<html>
<head>
<script type="text/javascript">
function validarCodigo(codigo)
{ 
	var re = /^[a-z\d]{5}$/i; 
	var nre = /^([A-Z]{5}|[a-z]{5}|\d{5}|[A-Z\d]{5}|[A-Za-z]{5}|[a-z\d]{5})$/; 
	return (re.test(codigo) && !nre.test(codigo)); 
} 

function hacer() 
{ 
	var formulario = document.forms['frmPrincipal']; 
	var login_password = formulario['login_password']; 
	var strError = ''; 
	var focusError = null 
	
	if(!strError && !validarCodigo(login_password.value)) 
	{ 
		strError = 'Su password debe contener minimo 5 caracteres alfanumericos'; 
		focusError = login_password;
	} 
	
	if(strError) 
	{ 
		alert(strError); 
		focusError.focus(); 
		return (''==strError); 
	} 
  formulario.submit();
}
</script>
</head>
<body>
<form name="frmPrincipal" action="algo.php" method="POST">
<input type="password" name="login_password" maxlength="15" size="10">
<input type="button" value="Validar" onClick="hacer()">  
</form> 
</body> 
</html> 
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
  #10 (permalink)  
Antiguo 27/01/2005, 16:27
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 6 meses
Puntos: 0
Ya lo resolvi yo mismo lei sobre expresiones regulares la verdad que esta muy interesante, y lo unico que tube que modificar fue las variables agregandole una coma(5,) al numero 5
[HTML]
var re = /^[a-z\d]{5,}$/i;
var nre = /^([A-Z]{5,}|[a-z]{5,}|\d{5,}|[A-Z\d]{5,}|[A-Za-z]{5,}|[a-z\d]{5,})$/;

[HTML]
__________________
El conocimiento es mi adicción y la programación mi pasión
:adios:
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 07:21.