Foros del Web » Programando para Internet » Javascript »

Validar campo usuario a lo que necesito

Estas en el tema de Validar campo usuario a lo que necesito en el foro de Javascript en Foros del Web. Hola: Tengo un formulario con tres campos: usuario, nombre y apellido y correo electronico; pero empiezo a preguntar por el primero para no hacerlo muy ...
  #1 (permalink)  
Antiguo 10/02/2007, 17:04
Avatar de alegna  
Fecha de Ingreso: julio-2005
Mensajes: 14
Antigüedad: 18 años, 9 meses
Puntos: 0
Validar campo usuario a lo que necesito

Hola:

Tengo un formulario con tres campos: usuario, nombre y apellido y correo electronico; pero empiezo a preguntar por el primero para no hacerlo muy largo. Indico los problemas y dudas.

El campo usuario debe tener un minimo de 5 caracteres alfanumericos y un maximo de 28; admitir solo minusculas, punto, guion bajo y numeros. El primer caracter no debe admitir un espacio ni tampoco un guion bajo o ser un numero.
Formatos correctos: a.legna | alegna | a_legna | alegna_98 | ale98
Por que admite mayusculas? donde esta el error?
Se puede simplificar el codigo... estableciendo las variables de otra manera? utilizando un solo IF?.... Lei algo como {5,28} pero no se como ni donde ubicarlo

Cita:
<html>
<head>
<title>Solicitar Documento</title>

<!--******* Estilo para elementos del formulario *******-->
<style>
fieldset {clear: both; width: auto; margin: 5% 20%; padding: 3px;
border: thick 1px #def;}

label {display: block; width: 150px;
font: 80% Arial, Helvetica, sans-serif; margin-left: 7px ;}

.botones {text-align: center;}

#control {display: inline; margin: 0px 25px;}

.campo {display: inline; width: 200px; margin: 5px 6px 5px 6px;
padding: 2px; border: inset 1px #abc;}
</style>

<!--**************** Validacion campo Usuario ****************-->
<script>
<!--
function validar(solicitar){
var cUse = solicitar.usuario.value.length;
var c_nu = /^([a-z]|[0-9]|_|.)+$/

// Campo Usuario
if(!c_nu.test(solicitar.usuario.value)){
alert('No se permiten campos vacios ni mayusculas.');
solicitar.usuario.focus();
solicitar.usuario.select();
return false;
}
if((cUse<=5)||(cUse>=28)){
alert('Nombre de usuario incorrecto.\nNo se admiten espacios en blanco.\nPuede contener entre 5 y 28 caracteres.');
solicitar.usuario.focus();
solicitar.usuario.select();
return false;
}
else
alert('Su solicitud ha sido enviada.');
return true;
}
//-->
</script>

</head>

<body onLoad="this.document.solicitar.usuario.focus()">

<form action="mailto: [email protected]" method="post" name="solicitar" onSubmit="return validar(this)">

<!--Datos Personales-->
<fieldset>
<legend>Sus Datos</legend>
<table>
<tr>
<td>
<label>Usuario:</label>
<input type="text" name="Usuario" id="usuario" maxlength="28" value="" class="campo">
</td>
</tr>
</table>
</fieldset>

<!--Boton de Envio-->
<div class="botones">
<div id="control">
<input type="submit" value="Enviar Datos" name="enviar">
</div>
<div id="control">
<input type="reset" value="Limpiar Datos">
</div>
</div>

</form>
</body>
</html>
Si pueden ayudarme con esto tal vez pueda resolver los otros dos campos solita..
  #2 (permalink)  
Antiguo 10/02/2007, 17:09
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Validar campo usuario a lo que necesito

/^([a-z]|[0-9]|_|\.)+$/

El . es un operador por lo que hay que poner \. para que considere el punto.
El operador . acepta cualquier simbolo menos el \n. Por eso te acepta las letras mayusculas

Yo lo pondría asi:

/^([a-z0-9\._](\s)?){5,28}$/

pero eso creo que acepta cadena vacia. Si es asi prueba con este:

/^(([a-z0-9\._])+(\s)?){5,28}$/

No me habia dado cuenta de lo del primer caracter. La definitiva sería asi:

/^[a-z\.](([a-z0-9\._])+(\s)?){4,27}$/

El primer caracter solo puede ser una letra minuscula o un puntos (solo has dicho que no podian ser guion bajo,espacios o numeros)

Otra solucion mejor seria:

/^[a-z\.]([a-z0-9\._](\s)?){4,27}$/

Perdona tantas expresiones pero lo he ido haciendo conforme escribía

Despues al pulsar el boton Submit llamarias a una funcion en javascript:

Código PHP:
function usuarios(cadena){
var 
exp = /^[a-z.]([a-z0-9._](s)?){4,27}$/;
if(!
exp.test(cadena))
    
alert(cadena);

Saludos.

PD: \s es para los espacios.

Última edición por wigglyUtrera; 10/02/2007 a las 17:27
  #3 (permalink)  
Antiguo 10/02/2007, 17:33
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Validar campo usuario a lo que necesito

Una pequeña rectificación, aunque lo anterior esta bien:

En una clase ( [ ... ] ) no es necesario poner \. [\.]
Funciona perfectamente poniendo [.]

Pero como tu no utilizaste clases, para el punto, sino disyunciones sí es necesario:

/^([a-z]|[0-9]|_|\.)+$/

en vez de

/^([a-z]|[0-9]|_|.)+$/


Saludo, espero haber resuelto tus dudas
  #4 (permalink)  
Antiguo 10/02/2007, 18:25
Avatar de alegna  
Fecha de Ingreso: julio-2005
Mensajes: 14
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Validar campo usuario a lo que necesito - mi solucion

Perdonar??! Muchisimas Gracias wigglyUtrera por tu dedicacion y explicaciones, fueron muy utiles Basandome en ellas, esto fue lo que hice y al parecer funciona

Cita:
function validar(solicitar){
var c_nu = /^[a-z\.]([a-z0-9\._]){4,27}$/

// Campo Usuario
if(!c_nu.test(solicitar.usuario.value)){
alert('Nombre de usuario invalido. Debe contener entre 5 y 28 caracteres.\nNo se permiten: campos o cadenas vacias ni mayusculas; guiones bajos y numeros como primer caracter.');
solicitar.usuario.focus();
solicitar.usuario.select();
return false;
}
A tu expresion original: /^[a-z\.](([a-z0-9\._])+(\s)?){4,27}$/ le quite lo destacado en rojo pues el nombre de usuario que necesito no debe permitir espacios en ninguna parte de la cadena.

Sigo trabajando y luego te cuento, un saludo
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 15:10.