Eu tenho uma âncora com os atributos HREF
e ONCLICK
definidos. Se clicado e o Javascript estiver habilitado, quero apenas executar ONCLICK
e ignorar HREF
. Da mesma forma, se o Javascript estiver desabilitado ou não for compatível, quero que ele siga a HREF
URL e ignore ONCLICK
. Abaixo está um exemplo do que estou fazendo, que executaria o JS e seguiria o link simultaneamente (geralmente o JS é executado e, em seguida, a página muda):
<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>
Qual é a melhor forma de fazer isso?
Espero uma resposta Javascript, mas aceitarei qualquer método, desde que funcione, especialmente se isso puder ser feito com PHP. Já li " um link href executa e redireciona a página antes que a função onclick do javascript seja capaz de terminar ", mas só atrasa HREF
, mas não o desativa completamente. Também estou procurando algo muito mais simples.
Respostas:
Você pode usar a primeira solução não editada, se colocar return primeiro no
onclick
atributo:Exemplo: https://jsfiddle.net/FXkgV/289/
fonte
Se você retornar false, ele deve impedir a ação padrão (ir para o href).
Editar: parece que não funciona, você pode fazer o seguinte:
fonte
onclick="return yes_js_login();"
comyes_js_login
retornofalse
event.stopImmediatePropagation()
Simplesmente desabilite o comportamento padrão do navegador usando
preventDefault
e passe oevent
dentro do seu HTML.<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>
fonte
com jQuery:
com JavaScript
Você atribui classe
.ignore-click
a quantos elementos desejar e os cliques nesses elementos serão ignoradosfonte
.btn-loading
é adicionada ao link clicado e, se for bem-sucedido, uma marca de seleção (em caso de erro, um X) substitui a animação de carregamento. Não quero que o botão possa ser clicado novamente em alguns casos (tanto para sucesso quanto para erro), usando isso eu posso de maneira simples$(elemnent).addClass('disabled')
e fácil alcançar a funcionalidade que estava procurando de uma forma elegante!Você pode usar este código simples:
fonte
É mais simples se você passar um parâmetro de evento como este:
fonte
Isso pode ajudar. Não é necessário JQuery
Este código faz o seguinte: Passa o link relativo ao Google Docs Viewer
this.href
Então, no seu caso, isso pode funcionar:
fonte
Resolvi uma situação em que precisava de um modelo para o elemento que trataria alternativamente um URL normal ou uma chamada de javascript, em que a função js precisa de uma referência ao elemento de chamada. Em javascript, "this" funciona como uma auto-referência apenas no contexto de um elemento de formulário, por exemplo, um botão. Eu não queria um botão, apenas a aparência de um link normal.
Exemplos:
Os atributos href e onClick têm os mesmos valores, exceto eu acrescento "return false" em onClick quando é uma chamada de javascript. Ter "return false" na função chamada não funcionou.
fonte
HREF
?Isso funcionou para mim:
fonte
No meu caso, tive uma condição quando o usuário clicou no elemento "a". A condição era:
Se outra seção tiver mais de dez itens, o usuário não deve ser redirecionado para outra página.
Se outra seção tiver menos de dez itens, o usuário deve ser redirecionado para outra página.
A funcionalidade dos elementos "a" depende do outro componente. O código no evento de clique é o seguinte:
fonte