Foros del Web » Programando para Internet » Javascript »

Busqueda de validacion de email

Estas en el tema de Busqueda de validacion de email en el foro de Javascript en Foros del Web. Buenas!! EStoy en la busqueda de una funcion que valide el mail y ande. Y no estoy con suerte.... Alguno me podria dar una manito? ...
  #1 (permalink)  
Antiguo 10/08/2007, 12:22
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Busqueda de validacion de email

Buenas!!

EStoy en la busqueda de una funcion que valide el mail y ande. Y no estoy con suerte.... Alguno me podria dar una manito?

Gracias!!
  #2 (permalink)  
Antiguo 10/08/2007, 12:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años
Puntos: 3
Re: Busqueda de validacion de email

Con el google se encuentran fácilmente. Aquí tienes un enlace con una rutina de validación de e-mail mediante expresión regular:

http://javascript.internet.com/forms...n---basic.html
  #3 (permalink)  
Antiguo 10/08/2007, 13:05
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Busqueda de validacion de email

Ahora reviso la que me linkeaste, pero te juro q "googlee" y probe diversas. Encontre una que andaba (despues la pego) por q es raro lo q me hace, se cuelga o.0 ...

Saludos y muchisimas gracias por tu pronta respuesta
  #4 (permalink)  
Antiguo 10/08/2007, 13:07
Avatar de ZeroLino  
Fecha de Ingreso: abril-2007
Mensajes: 91
Antigüedad: 17 años
Puntos: 2
Re: Busqueda de validacion de email

<!-- DOS PASOS PARA VALIDAR LA DIRECCION DE EMAIL:

1. Copiar el script dentro del <HEAD></HEAD>
2. Copiar el código del formulario dentro de <BODY></BODY> -->

1.Script de Validación

<HEAD>
<SCRIPT LANGUAGE="Javascript">

<!-- Principio
function emailCheck (emailStr) {
/* Verificar si el email tiene el formato user@dominio. */
var emailPat=/^(.+)@(.+)$/

/* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

/* Verifica los caracteres que son válidos en una dirección de email */
var validChars="\[^\\s" + specialChars + "\]"

var quotedUser="(\"[^\"]*\")"

/* Verifica si la dirección de email está representada con una dirección IP Válida */


var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/


/* Verificar caracteres inválidos */

var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
alert("Email address seems incorrect (check @ and .'s)")
return false
}
var user=matchArray[1]
var domain=matchArray[2]

// Si el user "user" es valido
if (user.match(userPat)==null) {
// Si no
alert("El nombre de usuario no es válido.")
return false
}

/* Si la dirección IP es válida */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("IP de destino inválida")
return false
}
}
return true
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
alert("El dominio parece no ser válido.")
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("La dicrección debe tener 3 letras si es ."com" o 2 si en de algún pais.")
return false
}

if (len<2) {
var errStr="La dirección es erronea"
alert(errStr)
return false
}

// La dirección de email ingresada es Válida
return true;
}
// End -->
</script>
</head>

<!-- PASO DOS: Archivo HTML -->

<BODY>
<center>
<form name=emailform onSubmit="return emailCheck(this.email.value);">
Your Email Address: <input type=text name="email"><br>
<input type=submit value="Submit">
</form>
</center>


esto no me recuerdo de donde lo obtuve...
pero ahi te lo envio

espero que te ayude

bye
  #5 (permalink)  
Antiguo 10/08/2007, 14:50
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Busqueda de validacion de email

Gracias a ambos por la ayuda....

Parece haber un problema con esta parte
(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.emailAddr.value))

Yo reemplazo este campo myForm.emailAddr.value, por el que corresponde y me tira que no esta declarado

Última edición por Spookysama; 10/08/2007 a las 14:54 Razón: faltaban datos
  #6 (permalink)  
Antiguo 10/08/2007, 15:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Busqueda de validacion de email

Creo que el error está en que te direges al objecto como

document.elementById("emailAddr").value

cuando tendrías que hacerlo como

nombreform.nombrecampo.value

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 11/08/2007, 11:11
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Busqueda de validacion de email

asi lo estoy llamando myForm.emailAddr.value

Pero creo q el error esta en la sentencia del principio

(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.

------------------------------------------------------------
Bueno de la web saque esta funcion y la adapte a mi form

Código HTML:
function validarmail(contactomail)
		{
		var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
		if (!re.test(contactomail)) 
			{
		    alert ("Dirección de email inválida");
		    form.contactomail.focus(); 
		    return false;
			}
		
		}

Lo llamo en el OnFocus


Código HTML:
<input id="contactomail" name="contactomail" type="text" size="30" onfocus="validarmail(this.form.contactomail)" maxlength="30" /> 


Cuando se sale del focus sale el alert pero no me hace foco en el campo como le pido en " form.contactomail.focus(); "

Y el formulario se envia igual aunque tenga mal la direccion.

Alguna ayudita?


Gracias!!

Última edición por Spookysama; 12/08/2007 a las 06:41
  #8 (permalink)  
Antiguo 12/08/2007, 13:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años
Puntos: 3
Re: Busqueda de validacion de email

En principio, no lo veo un método muy ortodoxo.

Haces que validarmail() se ejecute cuando el campo del email recibe el foco, o sea, se ejecuta incluso antes de escribir nada, con lo que antes que el usuario haya introducido la dirección completa, te dirá dirección inválida, lo cual no tiene mucho sentido.

Yo utilizaría el manejador de eventos onblur o onchange en vez de onfocus. Es decir, que evalúe en el momento que cambie el valor, o de perder el foco, no de obtenerlo.

Por otro lado, el método focus() por desgracia no funciona bien en Firefox. En IE sí te debería de funcionar. Hay por ahí algún truco para arreglarlo. Voy a mirar...
  #9 (permalink)  
Antiguo 12/08/2007, 13:38
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Busqueda de validacion de email

Hola, mira te imprimo el código tal y como ha de quedar


Código PHP:
function validarmail(contactomail) {
 if (/^
w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/.test(form.contactomail.value)){
return 
true;
}
alert("Dirección de email inválida")
form.contactomail.focus(); 
return 
false;
}
 
<
form onSubmit="return validarmail(this)">
<
input id="contactomail" name="contactomail" type="text" size="30" />
<
br />
<
input type="submit" value="Enviar" />
</
form
Por otro lado me da la sensación que lo que intentas es validar el campo antes de ser mandado, si es así has de usar mascaras

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 12/08/2007, 13:42
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Busqueda de validacion de email

En realidad no se dodne llamarlo para que sea mas eficiente... me dijeron q use el focus por eso lo puse ahi.

voy a probar como me dicen mas arriba de usar onblur

Gracias a todos por sus respuestas!
  #11 (permalink)  
Antiguo 12/08/2007, 13:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años
Puntos: 3
Re: Busqueda de validacion de email

He visto otro pequeño error:

<input id="contactomail" name="contactomail" type="text" size="30" onblur="validarmail(this.form.contactomail.value)" maxlength="30" />

antes estabas pasando como argumento el objeto campo de texto, no su valor.


En cuanto a lo de Firefox, he visto una posible solución que hay por ahí y dicen que funciona, pero a mí no me ha ido . Es símplemente usando un setTimeout:

cambiar
emailform.contactomail.focus()
por
setTimeout('emailform.contactomail.focus()', 100);

a ver si alguien da con una solución para Firefox.
  #12 (permalink)  
Antiguo 12/08/2007, 14:13
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Busqueda de validacion de email

Y sino la otra seria agarrar la funcion q tengo Validar (form) y meterle adentro la de validar mail pero no se si se puede ni como :S

Código:
function Validar(form)
{
	if (form.contactonombre.value == "")
			  { 
				  alert("Por favor ingrese su nombre"); 
				  form.contactonombre.focus(); 
				  return false; 
			  }			  
	
	  if (form.contactomail.value == "")
			  { 
			  	alert("Por favor ingrese su dirección de e-mail"); 
			  	form.contactomail.focus(); 
			  		return false; 
			  }
	
	  if (form.direccion.value == "")
			  { 
			  	alert("Por favor ingrese la direccion"); 
			  	form.direccion.focus(); 
			  	return false; 
			  }
	 
	
	  if (form.nombre.value == "")
			  { 
			  alert("Por favor ingrese el nombre del negocio"); 
			  form.nombre.focus();
			  return false; 
			  }
	
	 if (form.rubro.selectedIndex==0)
			  { 
			   alert("Por favor ingrese el rubro");
			   form.rubro.focus(); 
			   return false;
			   }

		
		if(form.descripcion.value.length < 20 || form.descripcion.value.length > 200)
			{
			alert("El campo descripcion debe contener entre 20 y 200 Caracteres"); 
			form.descripcion.focus(); 
			return false; 
			}	
	

	 else
	  		{
	  	
	  	  form.submit();
	  		}
}
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 21:31.