Foros del Web » Programando para Internet » Javascript »

Disparar un onClicl dentro de un <option> en IE/6.0

Estas en el tema de Disparar un onClicl dentro de un <option> en IE/6.0 en el foro de Javascript en Foros del Web. Saludos maestros. Tengo una menu ( <select> ) con varias opciones, ahora bien, lo que deseo hacer es que cuando el usuario haga click en ...
  #1 (permalink)  
Antiguo 09/02/2008, 14:50
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 23 años
Puntos: 22
Disparar un onClicl dentro de un <option> en IE/6.0

Saludos maestros.

Tengo una menu (<select>) con varias opciones, ahora bien, lo que deseo hacer es que cuando el usuario haga click en una opción del menú, se llame a una función (getData) en JavaScript que se ha declaro previamente.

Para hacer esto, pongo un evento onClick en cada uno de los <option> del menú, tal como se muestra a continuación

Cita:
<select name="cliente" id="cliente">
<option value="" selected>Por favor seleccione</option>
<option value="1" onClick="getData('parametro1', 'parametro2')">Elemento 1</option>
<option value="2" onClick="getData('parametro1', 'parametro2')">Elemento 2</option>
<option value="3" onClick="getData('parametro1', 'parametro2')">Elemento 3</option>


</select>
Aunque funciona bien en Firefox, en IE/6.0 no se dispara en evento onClick y la función no es llamada, ¿Alguien sabe si IE/6.0 no puede lanzar el evento onClick desde un <option>?

Agradezco desde ahora cualquier ayuda.

Saludos.
  #2 (permalink)  
Antiguo 09/02/2008, 15:35
 
Fecha de Ingreso: diciembre-2007
Ubicación: Argentina
Mensajes: 151
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Disparar un onClicl dentro de un <option> en IE/6.0

Puedes probar con el evento onChange de la etiqueta <select>

Sería algo así:

<select onChange="getData()">

Esto va a hacer que cada vez que se eliga una opción se dispare la función getData().

Si publicas el código del proyecto entero quizás podamos ayudarte mejor.

Saludos
Toda la suerte!!!
  #3 (permalink)  
Antiguo 09/02/2008, 16:10
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 23 años
Puntos: 22
Re: Disparar un onClicl dentro de un <option> en IE/6.0

Muchas grácias codigojavascript, he aquí la cuestión.

Lo que intento es que cuando el visitante selecciones una de las opciones del menú <option>:

1.- Se envíe un valor a un archivo php.
2.- Una vez enviado ese valor, se muestra el resultado del proceso PHP en la misma página sin necesidad de recargar la página, la función getData() se encarga de eso.

El primer parámetro de esa función getData() es el URL al archivo PHP cuyo resultado voy a mostrar sin actualizar la página y al cual debo de enviarle un valor para que procese.

Por jemplo, supongamos que el URL es procesar.php?id=1

ok, en una primera instancia lo hice como me dijiste, llamando a la función getData('url', 'targetDiv') con un onChangue en el <select>, peeeeero aqui viene el problema.

* targetDiv es el identificador del etiqueta <div> donde se mostrará el resultado.

El menú se arma dinámicamente, si llamo a getData() desde el <select>, como todavía no se ha armado el Menú, no le puedo especificar el parámetro que necesita enviar al archivo PHP.

Es por ello que decidí llamar a la función desde los <option> del menú conforme se van armando, porque cuando se arma cada uno de ellos ya conozco el valor que le voy a enviar al archivo PHP.

Lo pongo con ejemplos:

Así lo tenía al inicio.
Cita:
<select name="company_agency" id="company_agency" onChangue="getData('procesar.php?id=???', 'targetDiv')">

<option value="1" selected>Primer elemento</option>
<option value="2">Segundo elemento</option>
<option value="3">Tercer elemento</option>
<option value="4">Cuarto elemento</option>

</select>


Así lo modifiqué, ahora la llamada en lugar que sea en el <select>, es en cada <option> con un onClick, pero no funciona en IE/6.0

Cita:
<select name="company_agency" id="company_agency">
<option value="1" onClick="getData('procesar.php?id=1', 'targetDiv')">Primer elemento</option>
<option value="2" onClick="getData('procesar.php?id=2', 'targetDiv')">Segundo elemento</option>
<option value="3" onClick="getData('procesar.php?id=3', 'targetDiv')">Tercer elemento</option>
<option value="4" onClick="getData('procesar.php?id=4', 'targetDiv')">Cuarto elemento</option>
</select>

A continuación el código de la función getData()

Cita:
<script language = "javascript">
var XMLHttpRequestObject = false;

if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData(dataSource, divID)
{
if(XMLHttpRequestObject) {
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource);

XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}

XMLHttpRequestObject.send(null);
}
}
</script>
Saludos y grácias nuevamente.
  #4 (permalink)  
Antiguo 09/02/2008, 16:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 9 meses
Puntos: 1284
Re: Disparar un onClicl dentro de un <option> en IE/6.0

Hola Elalux:

Prueba así:

<select name="company_agency" id="company_agency" onchange="getData('procesar.php?id=' + this.value, 'targetDiv')">

Y olvídate de los onclicks... y los eventos siempre en minúsculas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 09/02/2008, 16:48
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 23 años
Puntos: 22
Re: Disparar un onClicl dentro de un <option> en IE/6.0

Muchísimas gracias mi estimado caricatos funcionó excelente.

Saludos.
  #6 (permalink)  
Antiguo 09/02/2008, 16:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 9 meses
Puntos: 1284
Re: Disparar un onClicl dentro de un <option> en IE/6.0

¡Excelente!, me alegro de que te sirviera.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 11:04.