Foros del Web » Programando para Internet » Javascript »

Llamada a funcion javascript

Estas en el tema de Llamada a funcion javascript en el foro de Javascript en Foros del Web. Hola a tod@s. A ver si me podeis decir por que me pasa esto tan raro. Tengo un formulario que utiliza una funcion Validar() tipica. ...
  #1 (permalink)  
Antiguo 19/11/2002, 07:28
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
Llamada a funcion javascript

Hola a tod@s. A ver si me podeis decir por que me pasa esto tan raro.

Tengo un formulario que utiliza una funcion Validar() tipica. Cuando la escribi, lo hice en la propia pagina del formulario y todo iba bien, es decir, hacia lo que yo esperaba. La llamada a la funcion la hago en el boton Enviar ( onclick="return Validar(this);" )

La sorpresa la lleve cuando quise sacar la funcion de la pagina en la que muestro los campos del formulario. La salve como un archivo.js, dentro de una carpeta scripts que esta en el propio sitio web. En la pagina del formulario puse:

<script LANGUAGE="javascript" SRC="./scripts/Validar.js>
</script>

y la llamada la hice igual que antes ( onclick="return Validar(this);" )


Bueno, pues no solo no funciona, si no que no muestra ninguno de los campos html del formulario .... :(

¿Por que sera esto ...?.

Gracias por adelantado.
  #2 (permalink)  
Antiguo 19/11/2002, 13:57
Avatar de .
.
 
Fecha de Ingreso: mayo-2002
Ubicación: Tampico
Mensajes: 906
Antigüedad: 22 años
Puntos: 1
aqui tienes un error
<script LANGUAGE="javascript" SRC="./scripts/Validar.js>
</script>

Corrección
<script LANGUAGE="javascript" SRC="../scripts/Validar.js>
</script>

supongo que el script esta en un directorio arriba de los archivos html
  #3 (permalink)  
Antiguo 19/11/2002, 14:21
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
No sé si será error de transcripción, pero también faltan unas comillas. Si no se ponen la comilla final, es como si no se cerrara el script, por lo que no es raro que no se visualice la página.

Además, para evitar errores, yo pondría una ruta absoluta y no relativa. Tambien procuraría usar siempre minúsculas en el nombre del fichero para evitar errores o equivocaciones.
Código:
<script type="text/javascript" src="/scripts/validar.js">
</script>
Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #4 (permalink)  
Antiguo 19/11/2002, 18:10
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
Aqui estoy de nuevo.

Lo que me dijo mikel de las comillas fue fundamental, en cuanto las puse ya pude visualizar los campos del formulario. Tambien puse todo en minusculas siguiendo su consejo.

El problema ahora es que no valida. Pasa ampliamente de la funcion. Le doy a Enviar con todos los campos en blanco, y va y lo envia, cosa que no hacia antes de sacar el codigo fuera de la pagina.

Cuando cargo la pagina, todo va bien; pero al darle al boton de enviar, ademas de que no valida, en la parte inferior izquierda del navegador, aparece el tipico triangulin amarillo de "Listo pero con errores en la pagina", y el error lo da precisamente en la linea de la llamada a la funcion:

<input type="submit" name="BtnEnviar" value="Enviar &gt;&gt;" onclick="return validar(this);">

No se porque pasa esto. Probe distintas cosas y na, que no va. ¿Es que tengo mal la llamada?. ¿En el archivo .js, hay que poner el codigo entre etiquetas <script type="text/javascript"> </script> y entre comentarios <!-- -->?.

A ver si podeis ayudarme.

Gracias. Mil.
  #5 (permalink)  
Antiguo 19/11/2002, 18:24
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
En base a lo que dices no debería haber problema, sin embargo te digo como lo atacaría:

- El include funciona como si transcribieras todo el código que tienes en el archivo incluido dentro del principal antes de cargar la página, asi que si te funcionaba antes, debería funcionar ahora a menos que hayas cometido un error al cortar.

- Coloca un alert al principio de la función de validación para certificar que está entrando en ella.

- ¿Por que pasas de parámetro el botón? ¿Cambias el mensaje del mismo dependiendo del resultado? ¿Que uso le das al parámetro dentro de tu función?

- Si sale correctamente el alert pero sigue sin funcionar, vuelve a cortar y pegar el código donde estaba. Es mas cómodo atacar una sola fuente de error que dos.

- Si nada funciona, vuelve a escribir publicando el código (o parte de el).

Saludos.
  #6 (permalink)  
Antiguo 20/11/2002, 01:57
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Re: Llamada a función javascript

trocolina:

En principio, estoy de acuerdo con las pruebas que te sugiere Kaopectate.

Pero también comentarte que, aunque tu ejemplo debiera funcionar, no es lógico poner un onclick en un botón tipo submit. En vez de ello, habría que colocar un onsubmit en la definición del formulario quitando el onclick del botón.
Código:
<form .... onsubmit="return Validar(this);">
  <input type="submit">
Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #7 (permalink)  
Antiguo 20/11/2002, 02:33
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 5 meses
Puntos: 1
Tal vez el error está en el evento que llama a la función.
Cita:
<input type="submit" name="BtnEnviar" value="Enviar &gt;&gt;" onclick="return validar(this);">
Para evitarme problemas, cuando llamo funciones desde los eventos procuro indicar el lenguaje del que se trata. Yo lo pondría así:
Código:
<input type="submit" name="BtnEnviar" value="Enviar &gt;&gt;" onclick="JavaScript: return validar(this);">
NOTA: No entiendo por qué demonios me separa en dos palabras JavaScript pero es una sola palabra en el código.

Saludos
__________________
Ariel Avelar

Última edición por Avelar; 20/11/2002 a las 08:51
  #8 (permalink)  
Antiguo 20/11/2002, 06:14
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
Nada chicos, esto no va.

Lo que se fijo es que la funcion no esta mal porque cuando la pongo dentro del codigo del formulario, funciona y no deja enviar hasta que los campos contengan algo.

Probe a poner la llamada en la etiqueta <form>, pero tampoco.
El problema es que no entra a evaluar la funcion. Ahora no me da ningun: "Listo pero con errores en la pagina", simplemente envia el formulario este como este, sin comprobar los datos de los campos.

¿sera que tengo que poner algo mas, aparte del codigo de la funcion, en validar.js?. O es eso, o la llamada yo creo. ¿que os parece a vosotros?.

Perdon por el mareo que os estoy pegando y muchas gracias ....
  #9 (permalink)  
Antiguo 20/11/2002, 06:42
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Si te funciona cuando está unido y al separarlo no, el problema lo tienes en la construcción de tu .js.

Por favor, describenos como hiciste tu archivo.

Saludos
  #10 (permalink)  
Antiguo 20/11/2002, 07:26
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
Lo describo sin favor y encantada de que me echeis una mano. ;) .

A ver, lo unico que hice fue cortar el codigo javascript del
formulario y pegarlo en un documento nuevo, totalmente vacio,
sin etiquetas html de ningun tipo (aunque probe a meter la
funcion entre etiquetas <script>, con y sin las etiquetas de
comentario de jscript, y tampoco valida), y guarde este
documento nuevo como 'validar.js' dentro de una carpeta al
mismo nivel que la carpeta donde esta la pagina del formulario,
colgando directamente de carpeta raiz.

Es decir, en validar.js esta directamente el codigo de la funcion y
na mas. Algo asi:

function validar()
{
//declaro variables

var fondo;
var botellero;
var display;
.
.
.
//asigno valores

fondo = window.document.formpedidosvir.EstucheFondo.value;
botellero = window.document.formpedidosvir.EstucheBotellero.va lue;
display = window.document.formpedidosvir.Display.value;
.
.
.
resultado = true;

//empiezo la validacion

if ((fondo == "0") && (botellero == "0") && (display == "0") && (plaformcero == "0") && (plaformuno == "0") && (buno == "0"))
{
window.alert("No ha seleccionado Cantidad de ningún Modelo");
resultado = false;
}
else
if ((nombre == "") || (nombre.length < 3) || (nombre.length > 20) || (nombre == null) || (isNaN(nombre)==false))
{
window.alert("Introduzca un nombre válido");
window.document.formpedidosvir.Nombre.focus();
resultado = false;
}
.
.
.

//devuelvo el resultado

return resultado;
}


A ver si veis algo mal, ¿vale?.

Saludos.
  #11 (permalink)  
Antiguo 20/11/2002, 08:10
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
¿Que pasa cuando colocas un alert a la entrada de la función, luego de la declaración de tus variables? ¿Aparece o no?

Cuando en JavaScript tienes un error dentro de una función, la misma no se ejecuta y no te das cuenta del porque de ese comportamiento. Por eso hay que tener paciencia e ir descartando una cosa tras otra.

Si la llamada al alert no se ejecuta puede ser una de estas opciones:

- Tienes un error en la función (que yo no veo y que contradice el hecho de que funciona cuando está dentro del código).

- La llamada está mal hecha (ya veremos si es asi).

Saludos.
  #12 (permalink)  
Antiguo 20/11/2002, 08:43
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
Aqui estoy otra vez.
No pasa nada al poner el alert. Es que no entra a la funcion.
Si entrase, evaluaria igual que cuando esta dentro del codigo del
formulario ¿no?.

¿La ruta del script en la pag. del formulario la tendre mal?:

<script type="text/javascript" SRC="../scripts/validar.js"></script>

La llamada la tengo asi:

<input type="submit" name="BtnEnviar" value="Enviar &gt;&gt;" onsubmit="return validar(this);">

y los campos en el formulario que llama a validar:

<input type="text" name="Nombre" size="40">
.
.
.
<select name="BUno">
<option value="0">Ninguna</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="75">75</option>
<option value="108">108</option>
</select>

No lo entiendo ....

Saludos.
  #13 (permalink)  
Antiguo 20/11/2002, 09:03
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Siguiente prueba:

Coloca tu .js en la misma carpeta que tu página y haz la llamada eliminando el path. Con eso vamos a descartar error en la declaración.

Seguimos en contacto.
  #14 (permalink)  
Antiguo 20/11/2002, 09:04
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Re: Llamada a la función.

Prueba a poner como te dije antes el onsubmit en la propia definición del formulario y quita el this ya que no lo usas en la función.
Código:
<form .... onsubmit="return validar();">
  <input type="submit">
Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #15 (permalink)  
Antiguo 20/11/2002, 09:44
 
Fecha de Ingreso: mayo-2002
Mensajes: 35
Antigüedad: 22 años
Puntos: 0
:cantar:

YA ESTA CHICOS ...

era la ruta, flipa. ponia las barras de encima del 7 ( / ), y eran las
de Alt Gr ( \ ) .... no comment ...

con la ruta asi ya funciona a la perfeccion:

<script type="text/javascript" SRC="..\scripts\validar.js"></script>

muchas gracias por todo.

saludos y besos.

chao.
  #16 (permalink)  
Antiguo 20/11/2002, 09:59
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Me alegra que te funcione, pero ten cuidado. El estandard en internet es el slash y no el back-slash. Si tu página la vas a alojar en Windows no hay problema, pero si la guardas en Unix no te va a funcionar.

De cualquier modo, ya funciona.

Saludos.
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:55.