Foros del Web » Programando para Internet » Javascript »

varios "handlers" para un evento

Estas en el tema de varios "handlers" para un evento en el foro de Javascript en Foros del Web. Tengo una pregunta, si yo tengo dos campos que capturan un evento y llaman a una funcion, pero los dos capturan el mismo evento, como ...
  #1 (permalink)  
Antiguo 17/07/2007, 12:54
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 0
varios "handlers" para un evento

Tengo una pregunta, si yo tengo dos campos que capturan un evento y llaman a una funcion, pero los dos capturan el mismo evento, como lo puedo hacer para elegir en que orden se ejecutan las funciones.

Me intento explicar mejor, yo tengo una página que contiene:

<input onblur="cerrar_resultados">
<div name="resultado" onclick="seleccionar_resultado">

De forma que al escribir en el input se rellena el div resultado, o sea un autocompletar tipico. Al apretar en uno de los resultados se pone su valor en el input. Hasta aqui ningun problema. El problema viene cuando quiero que si aprietas en un lugar que no sea el input o la lista de resultados se cierre la lista de resultados. Por eso pongo el onBlur. Pero entonces se cierra el div Resultados antes de ejecutar la accion onClick.

O sea el mismo click es el que tendria que llamar a las dos funciones, pero como se ejecuta una antes que la otra se fastidia el invento.

Hay alguna manera de saber si ese mismo evento tiene mas funciones para ejecutar??

Supongo que hay mil otras maneras de hacer esto mismo, si alguien sugiere una le estare agradecido.
  #2 (permalink)  
Antiguo 17/07/2007, 18:59
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: varios "handlers" para un evento

loading...............


Pues no, no hay forma de saber cuantos eventos tiene un objeto DOM a menos que hagas una clase que registre los eventos de tus objetos DOM luego la RECORRES y asi sabes cuantas tiene....

Código PHP:
function registrarevento(objeto,evento)
{  
   var 
retornoDelEvento=  objeto.poneselEventoblabla
  
if(!this.eventos)
  {
     
this.eventos={
      
click:[],
      
blur:[],
      
otros:[]
      };
      
this.eventos[evento].push(retornoDelEvento);
   }
   else
   {
      
this.eventos[evento].push(retornoDelEvento);      
   }
}

y para contar cuantos eventos tiene.

alert(tuObjetoDOM.eventos['click'].length); 
Y como se propaga los eventos pues... lo hace desde los hijos llegando la padre...

<div id="padre">
<div id="hijo"></div>
</div>

primero HIJO luego PADRE, pero puedes DETENER LA PROPAGACION

Código PHP:
function queEsLlamadaEnElDivHijo(evento)
{
  var 
evt evento || window.event;
  
//en IE
   
evt.cancelBubble=true;
  
//en Firefox
   
evt.stopPropagation();

Bueno me equivoqué al leer tu pregunta y respondí... a OTRO TIPO DE PREGUNTA pero no está demas mostrarlo.
Cita:
Lo que estas haciendo no es EVENT HANDLERS en tu caso si tienes muchos eventos del mism tipo simplemenre sobreescribirías los que ya existen.

Para event handlers usa.

addEventListener // en Mozilla
attachEvent //en IE

ahora el orden...
en IE se hace así

si tienes 10 eventos onclick.

2
1
4
3
6
5
8
7
10
9

En ese ORDEN .... no me preguntes porque... pero se ejecutan asi solo en el caso IE en los demas browser, en EL ORDEN QUE AÑADISTE LOS EVENTOS.
connection closed.
__________________

Maborak Technologies
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 12:04.