Foros del Web » Programando para Internet » Javascript »

¿Hay alguna manera de evitar el dobleclick en enlaces?

Estas en el tema de ¿Hay alguna manera de evitar el dobleclick en enlaces? en el foro de Javascript en Foros del Web. Necesito evitar múltiples click en enlaces porque se inserta 1 registro por cada click que se haga. Pienso evitarlo server-side, pero además me gustaría que ...
  #1 (permalink)  
Antiguo 10/09/2009, 14:28
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
¿Hay alguna manera de evitar el dobleclick en enlaces?

Necesito evitar múltiples click en enlaces porque se inserta 1 registro por cada click que se haga. Pienso evitarlo server-side, pero además me gustaría que JS se encargue de ello. Busqué en internet varias cosas pero ninguna me dio una solución 100% efectiva (no muestro lo que hice hasta ahora porque eliminé todas las pruebas de la calentura que me agarré)

Ideas? Gracias!
__________________
...___...
  #2 (permalink)  
Antiguo 10/09/2009, 14:35
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: ¿Hay alguna manera de evitar el dobleclick en enlaces?

a ver si comprendo, quieres evitar mas de un click en el enlace, no importa si sea la accion doble click. o sea, si hace un click, luego pasan por ejemplo 10 segundos y vuelve hacer click, entiendo que eso es lo que quieres evitar. se me ocurren dos ideas: una es cambiar la URL por otra, y la otra es asignarle el evento onclick para cancelar la accion predeterminada con return false.

Código:
<a href="URL" onclick="this.href = '#';">enlace</a>
<a href="URL" onclick="this.onclick = function(){return false;}">enlace</a>
sin embargo, la unica forma que el usuario puede volver hacer click es recargando el documento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 10/09/2009, 15:19
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

Hola

AZ, esta es otra solución que no es válida al 100%, por lo ya comentado por zerokilled

Código javascript:
Ver original
  1. var cuenta=0;
  2. function funcion () {
  3.  
  4.     if (!cuenta == 0) {
  5.         alert("Otra vez???");
  6.         return (false);
  7.     }
  8.     else
  9. cuenta++;
  10.         return (true);
  11. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 10/09/2009, 16:05
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

Así es, también tuve el mismo problema con doble salida de un Ajax.
La solución que hice fue, parecida al de Adler, pero esto funcionaría com múltiples links.

Código javascript:
Ver original
  1. var Loads = new Array();
  2.  
  3. function loL(id){
  4.     if(typeof (Loads[id]) == "undefined"){
  5.         Loads[id] = 1;
  6.         alert("Mensaje enviado");
  7.         // Escribes esta línea si quieres q se active en 3 seg.
  8.         setTimeout("delete(Loads["+id+"])",3000)
  9.     }
  10. }
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #5 (permalink)  
Antiguo 10/09/2009, 16:14
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
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

A ver, primero explico el trasfondo de todo esto:
Es una pequeña aplicación que lo que hace es agregar un registro en una tabla llamada inscripciones que relaciona una persona con un evento. Si los usuarios fueran "normales" harían sólo un click. Pero lamentablemente hay personas que usan doble click en internet como si se tratase de un ícono en el escritorio (vamos, que eso ya lo conocen :P). Resulta que cuando hacen 2 clicks se insertan 2 registros en esa tabla (si hacen 5 muy velozmente se insertan 5 y así hasta donde lleguen a hacer clicks).

La primer solución de zerokilled (la de cambiar el href) no sirve puesto que se hace efectiva al primer click y entonces ya no se puede inscribir.
La segunda, deja pasar más de un click

La solución de Adler me sirve pero sólo si está presente el alert(). Si se lo quito pasa más de un click. Queda feo, pero le voy a poner en el alert un mensajito que diga "Gracias por blablabla" y listo.

Cita:
sin embargo, la única forma que el usuario puede volver hacer click es recargando el documento.
Eso no es inconveniente ya que cuando se produce el primer click la página va al destino (inscripciones.asp?id_evento=X&accion=alta), inscripciones.asp hace sus cosas y regresa a la página anterior cambiándose el enlace de "inscribir" por "cancelar inscripción".

Gracias a ambos!


Edito: No estaba tu mensaje cuando comencé a escribir America|UNK. También probaré tu sugerencia. Gracias!

Edito 2: Ese comportamiento (múltiples clicks) se presentaba en F.F. Con IE (6) no ocurría.
__________________
...___...

Última edición por AlZuwaga; 10/09/2009 a las 16:46
  #6 (permalink)  
Antiguo 10/09/2009, 18:39
Avatar de mfb5  
Fecha de Ingreso: septiembre-2009
Mensajes: 23
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

Hola la manera que yo resolveria eso es poner un boton sin form en lugar de un enlace y al hacer click deshabilitarlo no se si te sirva:

Código javascript:
Ver original
  1. <input name="boton" type="button" value="boton" id="boton" onclick="this.disabled = true" />

saludos
  #7 (permalink)  
Antiguo 11/09/2009, 00:07
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

Por cierto el alert() no es para interrumpir los clicks, eso es un ejemplo de la función, puedes probarlo con:
Código HTML:
<a href="javascript:loL('inscripciones')">Test</a> 
, el click se vuelve activar en 3 sec, si no quieres que lo haga borras la linea setTimeout, pero esto es si estas trabajando con registros atravez de ajax, si lo que estas haciendo en los registros en una página en blanco u otro target tienes que hacerlo de otra forma.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #8 (permalink)  
Antiguo 16/08/2017, 04:16
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: ¿Hay alguna manera de evitar el dobleclick en enlaces?

Me funcionó con:
Código:
<script>
var clicks=0;
</script>
<a href="URL" onclick="clicks++;if(clicks>1){return false};">enlace</a>
Después de insertar cada registro es necesario que la página se recargue.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:30.