Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/02/2007, 16:52
Avatar de alegna
alegna
 
Fecha de Ingreso: julio-2005
Mensajes: 14
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Validar campos utilizando varias funciones

Hola:

Esto es lo que pude lograr a partir de la ayuda de wigglyUtrera y JavierB, gracias a ambos!!!

Código:
<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>

<script>
/******************************************************************************/
/******************************** VALIDACION ********************************/
/******************************************************************************/

  // Campo Usuario
     function vUser(){
     var c_nu = /^[a-z\.]([a-z0-9\._]){4,27}$/ //campo usuario
     if(!c_nu.test(solicitar.usuario.value)){
     alert('Nombre de usuario inválido. Debe contener entre 5 y 28 caracteres.\nNo se permiten: campos o cadenas vacías, espacios ni mayúsculas.\nPuede utilizar guiones bajos, puntos y números pero NO como primer caracter.');
     solicitar.usuario.focus();
     solicitar.usuario.select();
     return false;
     }
     return true;
     }

  // Campo Nombre
     function vNom(e,solicitar){
     // Admitir solo letras
		 tecla = (document.all) ? e.keyCode : e.which;
		 if (tecla==8) return true;
		 patron =/[\D\s]/;
		 te = String.fromCharCode(tecla);
		 if (!patron.test(te)) return false;
    // No admitir espacios iniciales
		 txt = solicitar.value;
		 if(txt.length==0 && te==' '){
		 alert('No se permiten espacios iniciales.');
		 return false;
		 }
    // Convertir 1° letra a mayuscula
		 if (txt.length==0 || txt.substr(txt.length-1,1)==' ') {
		 solicitar.value = txt+te.toUpperCase();
                 return false;
                 }
		 return true;
	         }
    // No admitir campo vacio
                 function vacio(){
	          var c_na = /^([a-z]|[A-Z]|á|é|Ã*|ó|ú|ñ|ü|\s)+$/
                  if(!c_na.test(solicitar.nombre.value)){
                  alert('Escriba su nombre y apellido respetando mayúsculas, minúsculas y acentos.');
		 solicitar.nombre.focus();
                 return false;
                 }
                 return true;
                 }		 

  // Campo EMAIL
  //Script tomado de:
  //w ww.forosdelweb.com/showpost.php?p=283672&postcount=86
  //Cómo validar una dirección de email utilizando expresiones regulares
  //por SpiceMan
  function emailCheck (emailStr) {
	   var emailPat=/^(.+)@(.+)$/;
	   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	   var validChars="\[^\\s" + specialChars + "\]";
	   var quotedUser="(\"[^\"]*\")";
	   var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/;
	   var atom=validChars + '+';
	   var word="(" + atom + "|" + quotedUser + ")";
	   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	   var matchArray=emailStr.match(emailPat);
	   if (matchArray==null) {
           alert('La dirección de correo parece ser inválida (verifique las @ y .)')
	   solicitar.email.select();
           return false
           }
           var user=matchArray[1]
           var domain=matchArray[2]
           if (user.match(userPat)==null) {
           alert('El nombre de usuario parece ser inválido.')
	   solicitar.email.select();
           return false
           }
           var IPArray=domain.match(ipDomainPat)
           if (IPArray!=null) {
           for (var i=1;i<=4;i++) {
           if (IPArray[i]>255) {
           alert('La direccion IP de destino es invalida!')
	   solicitar.email.select();
           return false
           }
           }
           return true
           }
           var domainArray=domain.match(domainPat)
           if (domainArray==null) {
           alert('El dominio no parece ser válido.')
	   solicitar.email.select();
           return false
           }
           var atomPat=new RegExp(atom,"g")
           var domArr=domain.match(atomPat)
           var len=domArr.length
           if (domArr[domArr.length-1].length<2 || 
           domArr[domArr.length-1].length>3) {
           alert('Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.')
	   solicitar.email.select();
           return false
           }
           if (len<2) {
           var errStr="Dominio Invalido!";
           alert(errStr)
	   solicitar.email.select();
           return false
           }
           return true;
           } 
//-->
</script>

</head>

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

<form action="mailto: [email protected]" method="post" name="solicitar" id="solicitar" onSubmit="return (vUser(this) && vacio(this) && emailCheck(this.email.value))"> 

<!--Datos Personales-->
<fieldset>
 <legend>Identificaci&oacute;n</legend>
  <table>
   <tr>
    <td>
     <label>Usuario:</label>
     <input type="text" name="usuario" id="usuario" maxlength="30" value="" class="campo"> 
    </td>
    <td>
    <label>Nombre y Apellido:</label>
    <input type="text" name="nombre" id="nombre" maxlength="30" value="" onkeypress="return vNom(event,this)" class="campo">
    </td>
    <td>
    <label>Correo electr&oacute;nico:</label>
    <input type="text" name="email" id="email" maxlength="30" value="" class="campo" >
    </td>
   </tr>
 </table>
</fieldset>

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

</form>
Estuve mirando la FAQ # 28 Confirmación de datos: w ww.forosdelweb.com/showpost.php?p=260723&postcount=29
y ahora estoy trabajando en eso...

Alegna