Foros del Web » Programando para Internet » Javascript »

funciones no definidas: evitar errores

Estas en el tema de funciones no definidas: evitar errores en el foro de Javascript en Foros del Web. Hola, tengo un select que se rellena automáticamente mediante ajax. El mismo lo utilizo en un formulario de alta y en uno de búsqueda. En ...
  #1 (permalink)  
Antiguo 02/02/2007, 14:40
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
funciones no definidas: evitar errores

Hola, tengo un select que se rellena automáticamente mediante ajax.
El mismo lo utilizo en un formulario de alta y en uno de búsqueda.
En el form de alta, necesito verificar que se haya seleccionado una opción de éste select con valor distinto de nulo para habilitar un campo file. Por lo que el select lo tengo así:

Código:
// Comienzo a imprimir el select
echo "<select name='pepe' class='campos' id='pepe' onchange='activa_file(this.value);'>";
echo "<option value=''>-- Seleccione un pepe --</option>";
while($registro=mysql_fetch_row($consulta)){
'...
}
Bien, en la página del buscador, donde hago uso del mismo archivo que me construye el select mediante ajax, no tengo definida la función activa_file y, claro, me da errores.

La pregunta sería... ¿Hay alguna manera de evitar los errores si la función no está definida?


Aunque se me ocurre hacer algo así con php...

Código:
$on_change = ($_php['self'] = "la_pagina_de_alta.php" ? " onchange='activa_file(this.value);'" : "")
echo "<select name='pepe' class='campos' id='pepe'" . $on_change . ">";
... me gustaría saber si se puede implementar directamente con javascript.

Salud
__________________
...___...
  #2 (permalink)  
Antiguo 02/02/2007, 15:12
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Re: funciones no definidas: evitar errores

Err... era $_SERVER['PHP_SELF'] en vez de $_php['self'] :)
Igual no me sirve porque me devuelve el nombre del archivo donde se encuentra el código que genera el select y no el nombre del archivo desde donde se lo invoca.

La otra opción sería validar al onclick de un button... pasa que me gustaba el efecto del input file disabled y que se habilite al seleccionar una opción válida del select en cuestión ñ_ñ

EDIT: Y la mejor opción, creo, sería que la función activa_file() sea la encargada de verificar si la página actual es "la_pagina_de_alta.php" y ejecutarse (y no hacer nada si no lo és)... pero para ello necesitaría de su ayuda ;)
__________________
...___...
  #3 (permalink)  
Antiguo 03/02/2007, 05:16
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: funciones no definidas: evitar errores

Hola Daz

No sé si te he entenedido bien pero ahí lanzo un tiro a ver si acierto.

por qué no pruebas esto

Código:
$on_change = strpos($_SERVER['PHP_SELF'], 'la_pagina_de_alta.php') ? " onchange='activa_file(this.value);'" : "")
echo "<select name='pepe' class='campos' id='pepe'" . $on_change . ">";
strpos devuelve verdadero o falso en caso de estar contenida la cadena que se le pasa en el segundo argumento en la cadena del primero
  #4 (permalink)  
Antiguo 05/02/2007, 11:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Re: funciones no definidas: evitar errores

Hola Tunait, no me sirve por lo mismo que dije en mi anterior mensaje:

Cita:
Igual no me sirve porque ($_SERVER['PHP_SELF']) me devuelve el nombre del archivo donde se encuentra el código que genera el select (select_dependientes_proceso.php) y no el nombre del archivo desde donde se lo invoca (buscador.php y ord_alta.php).
La estructura de los archivos es esta:
Código:
/carpeta/buscador.php -> invoca a select_dependientes_proceso.php
/carpeta/ord_alta.php -> invoca a select_dependientes_proceso.php
/carpeta/select_dependientes_proceso.php
Osea, $_SERVER['PHP_SELF'] devuelve "select_dependientes_proceso.php". En este archivo es donde está la llamada a la función activa_file(this.value)... pero esa función es válida sólo cuando es invocada desde la página ord_alta.php mas no desde buscador.php
Se me hace un poco complicado de explicar, ¡así que debe ser mucho más complicado que se me entienda! :)

La idea que se me ocurrió es colocar la función activa_file(pepe) en ambos archivos (buscador.php y ord_alta.php) y que sea la misma función javascript la encargada de ver si debe ejecutarse o no según desde qué página se la invoque... algo así:

Código:
function activa_file(pepe){
	if(esta página() == 'ord_alta.php')
		alert('Si')
	}
	else
		alert('No')
	}
}
Lo que no sé es qué puedo usar para reemplazar la pseudofunción esta página()

espero haberme explicado :)
__________________
...___...
  #5 (permalink)  
Antiguo 05/02/2007, 12:09
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: funciones no definidas: evitar errores

em .. no mucho

podrías usar el try / catch()

prueba esto

Código:
onchange="try{activa_file(this.value)} catch(error){return false}"
  #6 (permalink)  
Antiguo 05/02/2007, 12:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Re: funciones no definidas: evitar errores

Cita:
La pregunta sería... ¿Hay alguna manera de evitar los errores si la función no está definida?
La respuesta sería:

Cita:
prueba esto
Código:
onchange="try{activa_file(this.value)} catch(error){return false}"
Gracias!!!
__________________
...___...
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 03:21.