Foros del Web » Programando para Internet » Javascript »

Patrones en JavaScript

Estas en el tema de Patrones en JavaScript en el foro de Javascript en Foros del Web. Buenas, Tengo un pequeño problema con los patrones en JavaScript que espero alguien me pueda resolver. El patrón lo he sacado de una web que ...
  #1 (permalink)  
Antiguo 19/05/2011, 03:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Patrones en JavaScript

Buenas,

Tengo un pequeño problema con los patrones en JavaScript que espero alguien me pueda resolver. El patrón lo he sacado de una web que venían varios diferentes y es para el correo electrónico. El código es el siguiente:



Código:
function validateMail() {
	var mail = document.forms["form"]["email"].value;
	
	var b = /?^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$?/;

	return mail.search(b);
}
El formulario se llama form y el campo email. En la primera sentencia rescato el valor del campo, luego creo el patrón (repito que está sacado de una web) e intento devolver si el patrón se encuentra o no en el campo. He probado con mail.match(b), con mail.search(b) e incluso con b.test(mail). Ninguno me funciona, el error JavaScript que me salta no me dice absolutamente nada, simplemente que validateMail() no está definido.

A ver si alguien ve el error, porque ya lo he probado todo.

Muchas gracias y un saludo.

PD: alguien conoce alguna forma de deputara JavaScript o, al menos, de tener más información de los errores? La únca forma que conozco es con la consola de errores de Firefox, pero es una mierda (hablando mal y pronto).
  #2 (permalink)  
Antiguo 19/05/2011, 04:36
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Patrones en JavaScript

Si lo que quieres es que devuelve un booleano usa test.

En cualquier caso, el error que te da es porque la función no ha sido definida.

Eso puede ser debido a varias razones. Estaría bien que pusieses el código donde defines la función (en que parte del html o si lo defines en un archivo js aparte, en que parte incluyes el archivo js).

Además pon el código donde llamas a la función validateEmail.


Lo que dices de depurar, puedes utilizar la extensión Firebug de firefox que te aseguro que es muy buena para depurar Javascript (te permite poner puntos de ruptura, visualizar las variables, etc.)
  #3 (permalink)  
Antiguo 19/05/2011, 06:23
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Patrones en JavaScript

Buenas,

En primer lugar, gracias por responder.

A ver, he estado probando quitando y metiendo cosas en el código. Te comento el resultado de las pruebas. En primer lugar, te pongo este trozo de código, para que veas que no hay problema alguno de definición de las funciones o de inclusión dentro del html (lo tengo en un js externo).

Código:
function validateUser() {
	var email = document.forms["user_form"]["email"].value;

	var err = false;
	var text = "Se han producido los siguientes errores:\n";

	if (!validateField(email)) {
		err = true;
		text += "\t- El campo Nombre es obligatorio.\n";
	}

	if (err) {
		alert(text);
		return false;
	}

	return true;
}

function validateField(fld) {
	for (i = 0; i < fld.length; i++) {
		if (fld.charAt(i) != " ") {
			return true;
		}
	}
	return false;
}
Este código funciona. Básicamente, mira si el campo email está vacío, en cuyo caso hace saltar un aviso indicándolo. Hasta aquí todo bien, en el siguiente trozo de código, sustituyo la funcion validateField por validateMail, sin tocar absolutamente nada más:

Código:
function validateUser() {
	var email = document.forms["user_form"]["email"].value;

	var err = false;
	var text = "Se han producido los siguientes errores:\n";

	if (!validateMail(email)) {
		err = true;
		text += "\t- El formato del Correo electrónico es incorrecto.\n";
	}

	if (err) {
		alert(text);
		return false;
	}

	return false;
}

function validateMail(email) {
	var pat = /?^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$?/;

	return pat.test(email);
}
Ya me da error, concretamente, Firefox me dice "invalid quantifier" al cargar la página y al darle a enviar "validateUser is not defined".

El error tiene que estar en validateMail, porque es lo único que se ha modificado del primer ejemplo al segundo, todo lo demás está igual. He intentado, por si acaso, definir el patrón entre ", como en php, pero me dice que la función test() no existe para cadenas.

A ver si me puedes ayudar o alguien que vea el error. Muchas gracias de antemano.
  #4 (permalink)  
Antiguo 19/05/2011, 07:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Patrones en JavaScript

......................................
  #5 (permalink)  
Antiguo 19/05/2011, 08:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Patrones en JavaScript

Cita:
Iniciado por InKarC Ver Mensaje
......................................
emh?
  #6 (permalink)  
Antiguo 19/05/2011, 09:03
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Patrones en JavaScript

Me ilusione con que era un thread de patrones de diseño.

:sad:
__________________
blog | @aijoona
  #7 (permalink)  
Antiguo 19/05/2011, 09:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Patrones en JavaScript

Cita:
Iniciado por Aijoona Ver Mensaje
Me ilusione con que era un thread de patrones de diseño.
:sad:
Tienes que buscar en foros en ingles; en español el grado de nerdicidad es muy bajo respecto a Javascript avanzado.

Por cierto vgonga1986, "patrón" es un termino muy general, se llama "expresión regular".
  #8 (permalink)  
Antiguo 19/05/2011, 09:32
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Patrones en JavaScript

Leo bastante sobre el tema, pero lo interesante está en el debate.

Saludos.
__________________
blog | @aijoona
  #9 (permalink)  
Antiguo 20/05/2011, 05:06
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Patrones en JavaScript

Nadie ve de qué puede ser el problema?

Me haríais un gran favor, aunque luego compruebo el correo también con php, pero quería comprobarlo directamente en cliente con JavaScript, que para eso está, para no tener que enviar cosas que se puedan comprobar a priori.

Un saludo y gracias.
  #10 (permalink)  
Antiguo 20/05/2011, 05:26
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Patrones en JavaScript

Aquí hay un ejemplo de cómo validar un e-mail con javascript:
http://lineadecodigo.com/javascript/...on-javascript/
PD: Qué bueno que haya tantos javascript ninjas visitando el foro últimamente!

Última edición por Panino5001; 20/05/2011 a las 07:51

Etiquetas: patrones
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 18:16.