Foros del Web » Programando para Internet » Javascript »

No me reconoce las funciones de un archivo externo

Estas en el tema de No me reconoce las funciones de un archivo externo en el foro de Javascript en Foros del Web. Hola, tengo varias funciones en un archivo externo con extensión ".js", y en mi página tengo puesto de donde lo tiene que coger así: Código ...
  #1 (permalink)  
Antiguo 22/07/2008, 13:11
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
No me reconoce las funciones de un archivo externo

Hola, tengo varias funciones en un archivo externo con extensión ".js", y en mi página tengo puesto de donde lo tiene que coger así:
Código HTML:
<script src="validar.js" type="text/javascipt"></script> 
Pero más adelante cuando llamo a alguna de las funciones que tengo en ese archivo me da error, bueno, corrijo, no da error, simplemente no hace lo que tiene que hacer, lo de error lo he descubierto yo gracias a un inspector de código de esos, que me dice: comprobarEmail is not defined, comprobarNumero is not defined, y validarFormulario is not defined, ¿qué es lo que hago mal?, ¿no está bien puesto para que incluya el código de ese archivo?.

Aquí están las llamadas a las distintas funciones JavaScript,

Código HTML:
<input type="text" name="telefono" size="20" maxlength="12" onblur="comprobarNumero(this)" />
<input type="text" name="email" size="30" maxlength="50" onblur="comprobarEmail(this)" />
<input type="button" name="btn_aceptar" value="Enviar datos" onclick="validarFormulario()"/> 
Y en el archivo javascript con las funciones tengo esto:

Código:
// JavaScript Document
function validarFormulario()
{
	campos = new Array("nombre", "apellidos", "telefono");  
	for(i=0; i<campos.length; i++)
	{
		obj = eval("document.f." + campos[i]);
		if (obj.value == "")
		{
			alert ("Ha de rellenar el campo ["+obj.name+"]");
			obj.focus();
			return;
		}
	}
	document.f.submit();
}
function comprobarNumero(obj)
{
	if (obj.value != "")
		if (isNaN(obj.value))
		{
			alert("Debe introducir un número en el campo " + obj.name);
			obj.focus();
			return;
		}
}
function comprobarEmail(obj)
{
       var hayAlgo = true;
	if (obj.value =="")
		return true;
	else
		obj.value = obj.value.toLowerCase(); // pasamos el campo a minúsculas

	// validar la cuenta de correo usando una expresión regular (RegExp)
	if (obj.value.search(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ig))
       {
		hayAlgo = false;
		alert ("La cuenta no es válida, debes escribirla de forma: [email protected]");
		obj.focus();
		return false;
	}
	return true;
}
  #2 (permalink)  
Antiguo 22/07/2008, 13:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: No me reconoce las funciones de un archivo externo

Hola

¿Están en el misma carpeta el .js y su llamada?

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;" />
  #3 (permalink)  
Antiguo 22/07/2008, 14:02
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: No me reconoce las funciones de un archivo externo

Sí, están en la misma carpeta ambos.
  #4 (permalink)  
Antiguo 22/07/2008, 14:20
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: No me reconoce las funciones de un archivo externo

Ok, el metodo onblur es un poco incomodo para el usuario, opinión personal, así que por que no validas todo OnSubmit

Intentando solucionar tu problema añade esto

Cita:
return comprobarNumero(this)
return comprobarEmail(this)
return validarFormulario()
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;" />
  #5 (permalink)  
Antiguo 22/07/2008, 14:37
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: No me reconoce las funciones de un archivo externo

Hola rvelezb, el problema es que tienes errores en el archivo js con tus funciones por lo que el script no va ha funcionar, por pro otro lado te recomiendo no usar la funcion eval a menos que fuera necesario(es este punto tienes el error), aca te dejo una recomendacion de codigo para esa funcion

Código:
function validarFormulario()
{
	campos = new Array("nombre", "apellidos", "telefono");  	
	for(var i=0;i<document.f.elements.length;i++){
		if(document.f.elements[i].type=='text'){
			if(document.f.elements[i].value==''){
				alert ("Ha de rellenar el campo ["+document.f.elements[i].name+"]");
				document.f.elements[i].focus();
				return;	
			}
		}
		
	}
	document.f.submit();
}
Me parece un poco mas sencilla y la puedes usar para validar campos de texto extra...

con la llamada al archivo no hay nada de malo, si aun no usas firefox para trabajar con tus scripts te recomiendo que lo uses junto con un complemento par de complementos de desarrollador(jsview,web developer tool bar) se que te seran utiles..

Saludos y suerte
  #6 (permalink)  
Antiguo 22/07/2008, 14:39
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: No me reconoce las funciones de un archivo externo

¿Eso dónde lo pongo?, ¿cómo retorno de cada una de las funciones de JavaScript?.
  #7 (permalink)  
Antiguo 22/07/2008, 14:42
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: No me reconoce las funciones de un archivo externo

Cita:
Iniciado por Un_Tico Ver Mensaje
Hola rvelezb, el problema es que tienes errores en el archivo js con tus funciones por lo que el script no va ha funcionar, por pro otro lado te recomiendo no usar la funcion eval a menos que fuera necesario(es este punto tienes el error), aca te dejo una recomendacion de codigo para esa funcion

Código:
function validarFormulario()
{
	campos = new Array("nombre", "apellidos", "telefono");  	
	for(var i=0;i<document.f.elements.length;i++){
		if(document.f.elements[i].type=='text'){
			if(document.f.elements[i].value==''){
				alert ("Ha de rellenar el campo ["+document.f.elements[i].name+"]");
				document.f.elements[i].focus();
				return;	
			}
		}
		
	}
	document.f.submit();
}
Me parece un poco mas sencilla y la puedes usar para validar campos de texto extra...

con la llamada al archivo no hay nada de malo, si aun no usas firefox para trabajar con tus scripts te recomiendo que lo uses junto con un complemento par de complementos de desarrollador(jsview,web developer tool bar) se que te seran utiles..

Saludos y suerte
Es raro que tenga errores ahí en el código de las funciones JScript, ya que el código ese puesto dentro de una página, en vez de en un archivo aparte funciona bien, no da ningún tipo de problema.

Sí, utilizo el Firefox con la barra de herramientas de Web Developer y además tengo instalada la extensión Firebug.

Un saludo.
  #8 (permalink)  
Antiguo 22/07/2008, 15:27
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
De acuerdo Respuesta: No me reconoce las funciones de un archivo externo

Vale, ya sé donde estaba el fallo, era una tontería, estaba aquí:
Código:
<script src="validar.js" type="text/javascipt"></script>
En el tipo de archivo, puse "javascipt", en vez de javascript, me había comido a 'r'.
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 02:27.