Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/02/2009, 19:04
Avatar de jeybi
jeybi
 
Fecha de Ingreso: julio-2008
Ubicación: Mexico
Mensajes: 130
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Detectar mouse despues de 2 segundos de apretado el clic izq

Ok, lo que pasa es:

1.al acer clik llamas a editar(1)

2.la funcion editar intenta asignar funciones a los eventos onmousedown y onmouseup, cosa que no puede porque cuando es llamada, el click ya se termino

3.al dar click en el div, intentas llamar a: setTimeout(tuFuncion(id), 2000), cosa que no resulta porque para pasar parametros tienes enviarl el primer argumento como una string

4.el codigo falla por que settimeout no reconoce tuFuncion(id), cuando deberia ser 'tuFuncion("'+id+'")' por ejemplo.

Aqui tienes este trozo de codigo, estudialo y dime si te va:
Código javascript:
Ver original
  1. //Esta funcion recibe 2 argumentos, evento que es el evento por el cual fue llamada (onmouseup, onmousedown) e id, que es la id que le pasas
  2. function esperar(evento, id){
  3.     evento = window.event || evento; //Compatibilidad con IE para reconocer el evento
  4.        
  5.     if(evento.type == 'mousedown'){   //Si el evento es onmousedown entonces...
  6.         var funcion = 'editar("i'+id+'")';     //Creamos un string con la funcion editar mas el parametro id
  7.         esperar.tiempo = setTimeout(funcion, 2000);   //Llamamos a settimeout de la manera correcta
  8.     }    
  9.     else if(evento.type == 'mouseup'){   //Si el usuario suelta el click antes de tiempo...
  10.         clearTimeout(esperar.tiempo);   //Cancelamos la llamada a a editar
  11.     }
  12.            
  13. }
  14.  
  15. //Justo como la tenias
  16. function editar(id){
  17.     document.getElementById(id).value = "Ready!";  
  18. }

El HTML:

Código HTML:
<div id="1" style="width:400px; height:60px; border:1px solid red;" onmouseup="esperar(event, 1)" onmousedown="esperar(event, 1)"> Esto es un div cualquiera, al mantener el mouse por 2 segundos presionado saldra un mensaje </div>