Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/05/2011, 06:23
Avatar de vgonga1986
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.