Foros del Web » Programando para Internet » Javascript »

solo activar por el ultimo click en onclick

Estas en el tema de solo activar por el ultimo click en onclick en el foro de Javascript en Foros del Web. Hola amigos, quisiera saber como poder hacer lo siguiente: Código PHP: < script > function  activo (){ alert ( "mi mensaje" ); }  </script> <div  onclick="setTimeout('activo()',1000);" >Activar!</div>  este ...
  #1 (permalink)  
Antiguo 11/04/2014, 13:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Pregunta solo activar por el ultimo click en onclick


Hola amigos, quisiera saber como poder hacer lo siguiente:

Código PHP:
<script>
function 
activo(){
alert("mi mensaje");
</script>
<div  onclick="setTimeout('activo()',1000);" >Activar!</div> 
este codigo hace que , cuando hago click en "ACTIVAR tarda un segundo en mostrarme la alerta...

lo que quiero saber, si en caso una persona hace 5 clicks seguidos... mostrara 5 veces la alerta, hay alguna manera de hacer que tan solo se muestre una alerta como solo haciendo caso al ultimo click y no todos los que se hagan ?...



  #2 (permalink)  
Antiguo 11/04/2014, 13:28
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: solo activar por el ultimo click en onclick

Deberias dinamizar la función activo ... para poder jugar con clearTimeout();

algo asi como :
Código HTML:
Ver original
  1. <div  onclick="activo()" >Activar!</div>

Código Javascript:
Ver original
  1. function activo(){
  2. var segundos=2000;
  3. clearTimeout(temp);
  4. var temp = setTimeout(function(){
  5. alert("mnsj");
  6. },segundos);

Saludos de nuevo! :D
  #3 (permalink)  
Antiguo 11/04/2014, 13:29
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: solo activar por el ultimo click en onclick

Oh, no... me ganaron.
  #4 (permalink)  
Antiguo 11/04/2014, 13:42
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por Djoaq Ver Mensaje
Deberias dinamizar la función activo ... para poder jugar con clearTimeout();

algo asi como :
Código HTML:
Ver original
  1. <div  onclick="activo()" >Activar!</div>

Código Javascript:
Ver original
  1. function activo(){
  2. var segundos=2000;
  3. clearTimeout(temp);
  4. var temp = setTimeout(function(){
  5. alert("mnsj");
  6. },segundos);

Saludos de nuevo! :D

jeje >_< hola de nuevo Djoaq gracias por tu ayuda, pero aqui no he logrado evitarlo, hice 3 clicks y me manda las 3 alerta sabes que podria ser
  #5 (permalink)  
Antiguo 11/04/2014, 13:53
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: solo activar por el ultimo click en onclick

Podrías controlar los mensajes de alerta con una variable que vaya incrementando su valor con cada clic. En cada ingreso a la función, aumentas su valor y compruebas si dividido entre 5, da como residuo 0, solamente en ese caso se mostraría el mensaje de alerta, caso contrario, no se muestra el mensaje.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 11/04/2014, 13:59
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por Alexis88 Ver Mensaje
Podrías controlar los mensajes de alerta con una variable que vaya incrementando su valor con cada clic. En cada ingreso a la función, aumentas su valor y compruebas si dividido entre 5, da como residuo 0, solamente en ese caso se mostraría el mensaje de alerta, caso contrario, no se muestra el mensaje.

DEMO

Saludos
es buena la deduccion Alexis, pero que pasaria si hacen menos clicks ... supongamos 2 o 3 ... por eso me interesaria saber que cuando terminen los innumerables clicks recien muestre la alerta
  #7 (permalink)  
Antiguo 11/04/2014, 14:30
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: solo activar por el ultimo click en onclick

Es que aqui el tema es que necesitas una capa de persistencia ... es decir .. que necesitas almacenar en algún sitio si el user a hecho click .

Se me ocurren varias formas de hacerlo :

que tengas un div o input oculto que tenga un valor inicial = 0 por ejemplo y que con el primer click cambie de estado a 1 ejemplo Jquery :

Código Javascript:
Ver original
  1. <input class="control1" value="0" style="display:none"/>
  2.  
  3.  
  4.  <div  onclick="activo()" >Activar!</div>
  5.  
  6. <script>
  7. function activo(){
  8. var $control = $(".control1").val(); //aqui obtenemos valor de input oculto
  9. if ($control == 0){ //si vale 0 entonces hace el alert y lo cambia al 1
  10. alert("mensaje");
  11. $(".control1").val("1"); //al cambiarlo cuando vuelva a pasar por aquí no se ejecuta!
  12.  
  13. }
  14.  
  15. }
  16. $(document).ready(function(){
  17. activo();
  18. });
  19.  
  20. </script>






el tema del último o el primero para que lo necesitas?

Última edición por Djoaq; 11/04/2014 a las 14:32 Razón: cambio higlight
  #8 (permalink)  
Antiguo 11/04/2014, 15:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: solo activar por el ultimo click en onclick

Se me ocurren algunas ideas para solucionar esto, pero, solo por curiosidad, ¿Para que quieres hacer esto? ¿Con qué fin?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 11/04/2014, 15:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por Djoaq Ver Mensaje
Es que aqui el tema es que necesitas una capa de persistencia ... es decir .. que necesitas almacenar en algún sitio si el user a hecho click .

Se me ocurren varias formas de hacerlo :

que tengas un div o input oculto que tenga un valor inicial = 0 por ejemplo y que con el primer click cambie de estado a 1 ejemplo Jquery :

Código Javascript:
Ver original
  1. <input class="control1" value="0" style="display:none"/>
  2.  
  3.  
  4.  <div  onclick="activo()" >Activar!</div>
  5.  
  6. <script>
  7. function activo(){
  8. var $control = $(".control1").val(); //aqui obtenemos valor de input oculto
  9. if ($control == 0){ //si vale 0 entonces hace el alert y lo cambia al 1
  10. alert("mensaje");
  11. $(".control1").val("1"); //al cambiarlo cuando vuelva a pasar por aquí no se ejecuta!
  12.  
  13. }
  14.  
  15. }
  16. $(document).ready(function(){
  17. activo();
  18. });
  19.  
  20. </script>






el tema del último o el primero para que lo necesitas?
Cita:
Iniciado por Alexis88 Ver Mensaje
Se me ocurren algunas ideas para solucionar esto, pero, solo por curiosidad, ¿Para que quieres hacer esto? ¿Con qué fin?


veran queridos amigos, estoy haciendo un juego de web... y bueno en si no es la alerta que quiero que de, solo lo enseñe aqui para que me dejara entender,

lo que pasa es de que el juego se desplega por flechas, entonces ahi guardo la accion en el onclick con el objetivo de poder guardar las coordenadase n una base de datos ... pero al parecer cuando click mucho a las flechas carga el numero de veces como las he presionado por eso me importa hacer un limite que guarde solo al ultimo click
  #10 (permalink)  
Antiguo 11/04/2014, 15:52
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por helion Ver Mensaje
veran queridos amigos, estoy haciendo un juego de web... y bueno en si no es la alerta que quiero que de, solo lo enseñe aqui para que me dejara entender,

lo que pasa es de que el juego se desplega por flechas, entonces ahi guardo la accion en el onclick con el objetivo de poder guardar las coordenadase n una base de datos ... pero al parecer cuando click mucho a las flechas carga el numero de veces como las he presionado por eso me importa hacer un limite que guarde solo al ultimo click
A ver esto que dices tiene una logica un poco compleja ...

Me explico :

Tu no puedes saber cuando alguien va a hacer el ultimo click ... porque no puedes predecir si va a hacer 1 o 500 ... pero si puedes jugar sabiendo cuando hace el primer click .. y entonces hacer un setInterval :
algo así como :
Código Javascript:
Ver original
  1. setInterval(function(){alert("Hola")},3000);


Esto se repetira ciclicamente cada 3 seg..

Luego para borrar el interval : clearInterval(mivariable);


Código Javascript:
Ver original
  1. var tiempos= setInterval(function(){alerta()},1000);
  2.  
  3. function alerta()
  4. {
  5. alert("hola");
  6. }
  7.  
  8. function parartemporizador()
  9. {
  10. clearInterval(tiempos);
  11. }
  #11 (permalink)  
Antiguo 11/04/2014, 22:16
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por Djoaq Ver Mensaje
A ver esto que dices tiene una logica un poco compleja ...

Me explico :

Tu no puedes saber cuando alguien va a hacer el ultimo click ... porque no puedes predecir si va a hacer 1 o 500 ... pero si puedes jugar sabiendo cuando hace el primer click .. y entonces hacer un setInterval :
algo así como :
Código Javascript:
Ver original
  1. setInterval(function(){alert("Hola")},3000);


Esto se repetira ciclicamente cada 3 seg..

Luego para borrar el interval : clearInterval(mivariable);


Código Javascript:
Ver original
  1. var tiempos= setInterval(function(){alerta()},1000);
  2.  
  3. function alerta()
  4. {
  5. alert("hola");
  6. }
  7.  
  8. function parartemporizador()
  9. {
  10. clearInterval(tiempos);
  11. }
hola amigo Djoaq, entonces haber me explico de esta manera... como podria hacer que se active la alerta si en caso deja de presionar el boton por las de 2 segundos ? me entiendes :D osea si lo presionan seguidos no pasa nada, pero cuando haya un suspenso de 2 segundos recien se active... hay alguna manera ? :)
  #12 (permalink)  
Antiguo 12/04/2014, 03:58
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: solo activar por el ultimo click en onclick

Hola con esto
Cita:
como podria hacer que se active la alerta si en caso deja de presionar el boton por las de 2 segundos ? me entiendes :D osea si lo presionan seguidos no pasa nada, pero cuando haya un suspenso de 2 segundos recien se active
entendi que quieres que se active la alerta si se deja presionado el boton 2 segundos y que no pase nada si solo le den clicks pero nada mas? Te refieres a esto?

Saludos
  #13 (permalink)  
Antiguo 12/04/2014, 07:22
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: solo activar por el ultimo click en onclick

buenas,
lo que entiendo del tema es que se busca limitar el click mientras se va actualizando la base de datos. con esto asumo que está usando AJax para enviar los datos a la base de datos. sea o no con Ajax, la técnica es muy similar. de momento me asalta una duda, ¿cómo determinas el tiempo requerido de espera para volver habilitar la acción? ¿debe ser un tiempo fijo o mientras se actualiza la base de datos?

si es por un tiempo fijo, la sugerencia de @djoaq es una alternativa. solo que en su código de ejemplo hay un error; la variable temp debe ser global. también debes tener cuidado de si quieres extender el tiempo de espera en cada click.

Código:
// tiempo fijo, en cada click se extiende la espera ;
function activo(){
clearTimeout(temp);
temp = setTimeout(function(){
alert("mnsj");
},5000);
var temp = null;

// tiempo fijo, no se extiende el tiempo de espera ;
function activo(){
if (!isNaN(temp)) return;
temp = setTimeout(function(){
alert("mnsj");
temp = null;
},5000);
var temp = null;
de forma similar se puede hacer si el tiempo de espera es mientras se actualiza la base de datos. en este caso, debes crear una variable tipo flag. es decir, cuando se activa la función, se inicia la variable a un valor que provoque una salida prematura al volver invocar la misma función; parecido al segundo código. para restaurar la variable, una vez termine la actualización de la base de datos, cambias el valor de dicha variable. nuevamente, aquí pienso que estás usando Ajax. entonces, la restauración la haces al completarse la comunicación de Ajax con el servidor.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #14 (permalink)  
Antiguo 12/04/2014, 10:26
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por patilanz Ver Mensaje
Hola con esto entendi que quieres que se active la alerta si se deja presionado el boton 2 segundos y que no pase nada si solo le den clicks pero nada mas? Te refieres a esto?

Saludos
claro amigo, a eso me refiero a que cuando deje de presionar el boton por 2 segundos ... se muestre solo "1 alerta" y no retome todas las alertas por todos los clicks hechos ...



Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
lo que entiendo del tema es que se busca limitar el click mientras se va actualizando la base de datos. con esto asumo que está usando AJax para enviar los datos a la base de datos. sea o no con Ajax, la técnica es muy similar. de momento me asalta una duda, ¿cómo determinas el tiempo requerido de espera para volver habilitar la acción? ¿debe ser un tiempo fijo o mientras se actualiza la base de datos?

si es por un tiempo fijo, la sugerencia de @djoaq es una alternativa. solo que en su código de ejemplo hay un error; la variable temp debe ser global. también debes tener cuidado de si quieres extender el tiempo de espera en cada click.

Código:
// tiempo fijo, en cada click se extiende la espera ;
function activo(){
clearTimeout(temp);
temp = setTimeout(function(){
alert("mnsj");
},5000);
var temp = null;

// tiempo fijo, no se extiende el tiempo de espera ;
function activo(){
if (!isNaN(temp)) return;
temp = setTimeout(function(){
alert("mnsj");
temp = null;
},5000);
var temp = null;
de forma similar se puede hacer si el tiempo de espera es mientras se actualiza la base de datos. en este caso, debes crear una variable tipo flag. es decir, cuando se activa la función, se inicia la variable a un valor que provoque una salida prematura al volver invocar la misma función; parecido al segundo código. para restaurar la variable, una vez termine la actualización de la base de datos, cambias el valor de dicha variable. nuevamente, aquí pienso que estás usando Ajax. entonces, la restauración la haces al completarse la comunicación de Ajax con el servidor.

hola amigo gracias por responder, veras hmm no uso ajax ... porque recien estoy aprendiendo a manejar javascript ... e usado tu codigo y va bien solo que el problema esta, que si yo hago 3 clicks y sigo procediendo a los clicks me vota 3 alertas, yo quiero que si hago infinidades de clicks y pase en este caso 5 segundos solo me vote una alerta y no que cuente todas las alertas por todos los clicks que he hecho me dejo entender :O ?
  #15 (permalink)  
Antiguo 13/04/2014, 05:24
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por helion Ver Mensaje
hola amigo gracias por responder, veras hmm no uso ajax ... porque recien estoy aprendiendo a manejar javascript ... e usado tu codigo y va bien solo que el problema esta, que si yo hago 3 clicks y sigo procediendo a los clicks me vota 3 alertas, yo quiero que si hago infinidades de clicks y pase en este caso 5 segundos solo me vote una alerta y no que cuente todas las alertas por todos los clicks que he hecho me dejo entender :O ?
Porque no utilizas el evento doubleclick?? :
Código Javascript:
Ver original
  1. <elemento ondblclick="tufuncion()">
  #16 (permalink)  
Antiguo 13/04/2014, 10:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Exclamación Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por Djoaq Ver Mensaje
Porque no utilizas el evento doubleclick?? :
Código Javascript:
Ver original
  1. <elemento ondblclick="tufuncion()">
Hola Djoaq veras brother tambien uso las flechas por eso crei mas necesario activar la alerta cuando pasen 2 segundos...

osea si hago 3 clicks seguidos (supongamos en menos de 1 segundo) entonces no activara ninguno de los 2 primeros la alerta, en cambio el 3ero si activara la alerta porque es mi ultimo click que completara los 2 segundos de espera y activara la alerta no se si no me dejo entender
  #17 (permalink)  
Antiguo 14/04/2014, 13:30
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: solo activar por el ultimo click en onclick

Crea un variable contador y un intervalo, cuando se hace click se asigna a la variable 2s 2000 microsecundos. Luego el intervalo cada 1 microsecundo comprueba si el contador es -1 entonces no hace nada si es mayor que 0 resta y si al restar se hace 0 pues aparece la alerta. Asi por cada click se resetea y por ejemplo con 3 clicks en 1 segundos empezara a contar desde el tercero y en 2s aparece la alerta.

Es esto?
  #18 (permalink)  
Antiguo 14/04/2014, 19:31
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por patilanz Ver Mensaje
Crea un variable contador y un intervalo, cuando se hace click se asigna a la variable 2s 2000 microsecundos. Luego el intervalo cada 1 microsecundo comprueba si el contador es -1 entonces no hace nada si es mayor que 0 resta y si al restar se hace 0 pues aparece la alerta. Asi por cada click se resetea y por ejemplo con 3 clicks en 1 segundos empezara a contar desde el tercero y en 2s aparece la alerta.

Es esto?
siiiiiiiiiii bro !! exactamente asiii es como deseo ayudame porfavor :/
  #19 (permalink)  
Antiguo 15/04/2014, 10:08
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: solo activar por el ultimo click en onclick

Pues... seria algo como esto:

Código Javascript:
Ver original
  1. var cont=-1;
  2. setInterval(function(){
  3.            cont--;
  4.            if(cont==0)alert();
  5. },1);

Código HTML:
Ver original
  1. <button onclick="cont=2000;//2000 = 2s"></button>

No lo he probado pero debería de funcionar
  #20 (permalink)  
Antiguo 15/04/2014, 13:16
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: solo activar por el ultimo click en onclick

Cita:
Iniciado por patilanz Ver Mensaje
Pues... seria algo como esto:

Código Javascript:
Ver original
  1. var cont=-1;
  2. setInterval(function(){
  3.            cont--;
  4.            if(cont==0)alert();
  5. },1);

Código HTML:
Ver original
  1. <button onclick="cont=2000;//2000 = 2s"></button>

No lo he probado pero debería de funcionar
eres lo maximo brother no se como puedes acertar sin probarlo, era lo que necesitaba :D te lo agradezco !

Etiquetas: onclick, ultimo
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 05:53.