Tengo un ancla con ambos HREF
y ONCLICK
atributos establecidos. Si se hace clic y Javascript está habilitado, quiero que solo se ejecute ONCLICK
e ignore HREF
. Del mismo modo, si Javascript está deshabilitado o no es compatible, quiero que siga la HREF
URL e ignore ONCLICK
. A continuación se muestra un ejemplo de lo que estoy haciendo, que ejecutaría el JS y seguiría el enlace al mismo tiempo (generalmente el JS se ejecuta y luego la página cambia):
<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>
¿Cuál es la mejor manera de hacer esto?
Espero una respuesta de Javascript, pero aceptaré cualquier método siempre que funcione, especialmente si esto se puede hacer con PHP. Ya he leído " un enlace href se ejecuta y redirige la página antes de que la función onclick de javascript pueda finalizar ", pero solo lo retrasa HREF
, pero no lo desactiva por completo. También busco algo mucho más sencillo.
Respuestas:
Puede usar la primera solución sin editar, si coloca return primero en el
onclick
atributo:Ejemplo: https://jsfiddle.net/FXkgV/289/
fuente
Si devuelve falso, debería evitar la acción predeterminada (ir al href).
Editar: Lo siento, eso no parece funcionar, puedes hacer lo siguiente en su lugar:
fuente
onclick="return yes_js_login();"
conyes_js_login
devoluciónfalse
event.stopImmediatePropagation()
Simplemente deshabilite el comportamiento predeterminado del navegador usando
preventDefault
y pase elevent
dentro de su HTML.<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>
fuente
con jQuery:
con JavaScript
Asignas clase
.ignore-click
a tantos elementos como quieras y los clics en esos elementos serán ignoradosfuente
.btn-loading
se agrega al enlace en el que se hizo clic, luego, si tiene éxito, una marca de verificación (en el error una X) reemplaza la animación de carga. No quiero que se pueda hacer clic en el botón nuevamente en algunos casos (tanto para el éxito como para el error), ¡al usar esto puedo$(elemnent).addClass('disabled')
lograr de manera simple y fácil la funcionalidad que estaba buscando de una manera elegante!Puede utilizar este sencillo código:
fuente
Es más simple si pasa un parámetro de evento como este:
fuente
Esto podría ayudar. No se necesita JQuery
Este código hace lo siguiente: pasa el vínculo relativo al visor de documentos de Google
this.href
Entonces, en su caso, esto podría funcionar:
fuente
Resolví una situación en la que necesitaba una plantilla para el elemento que manejaría alternativamente una URL normal o una llamada de JavaScript, donde la función js necesita una referencia al elemento de llamada. En javascript, "esto" funciona como una autorreferencia solo en el contexto de un elemento de formulario, por ejemplo, un botón. No quería un botón, solo la aparición de un enlace normal.
Ejemplos:
Los atributos href y onClick tienen los mismos valores, excepto que agrego "return false" en onClick cuando es una llamada javascript. Tener "return false" en la función llamada no funcionó.
fuente
HREF
?Esto funcionó para mí:
fuente
En mi caso, tuve una condición cuando el usuario hace clic en el elemento "a". La condición era:
Si otra sección tiene más de diez elementos, el usuario no debe ser redirigido a otra página.
Si otra sección tiene menos de diez elementos, entonces el usuario debe ser redirigido a otra página.
La funcionalidad de los elementos "a" depende del otro componente. El código dentro del evento de clic es el siguiente:
fuente