116 votes

Comment désactiver le HREF si le onclick est exécuté ?

J'ai une ancre avec les deux HREF y ONCLICK attributs définis. Si l'on clique dessus et que Javascript est activé, je veux qu'il soit seulement exécuter ONCLICK et ignorer HREF . De même, si le Javascript est désactivé ou non pris en charge, je veux qu'il suive le modèle de l'application HREF URL et ignorer ONCLICK . Voici un exemple de ce que je fais, qui exécuterait le JS et suivrait le lien simultanément (habituellement le JS est exécuté puis la page change) :

<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>

quelle est la meilleure façon de procéder ?

J'espère une réponse en Javascript, mais j'accepterai n'importe quelle méthode tant qu'elle fonctionne, surtout si cela peut être fait avec PHP. J'ai lu " un lien href s'exécute et redirige la page avant que la fonction javascript onclick ne puisse se terminer " déjà, mais cela ne fait que retarder HREF mais ne le désactive pas complètement. Je cherche également quelque chose de beaucoup plus simple.

75voto

elproduc3r Points 774

Vous pouvez utiliser la première solution non éditée, si vous mettez return en premier dans le fichier onclick attribut :

<a href="https://example.com/no-js-login" onclick="return yes_js_login();">Log in</a>

yes_js_login = function() {
     // Your code here
     return false;
}

Exemple : https://jsfiddle.net/FXkgV/289/

63voto

Chris B Points 4119
    yes_js_login = function() {
         // Your code here
         return false;
    }

Si vous renvoyez false, cela devrait empêcher l'action par défaut (aller vers le href).

Editar: Désolé, cela ne semble pas fonctionner, vous pouvez faire ce qui suit à la place :

<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>

42voto

Buksy Points 687

Il suffit de désactiver le comportement par défaut du navigateur en utilisant preventDefault et passer le event dans votre HTML.

<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>

yes_js_login = function(e) {
  e.preventDefault();
}

19voto

Andrew Points 2440
<a href="http://www.google.com" class="ignore-click">Test</a>

avec jQuery :

<script>
    $(".ignore-click").click(function(){
        return false;
    })
</script>

avec JavaScript

<script>
        for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) {
            document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) {
                event.preventDefault();
                return false;
            });
        }
</script>

Vous attribuez la classe .ignore-click à autant d'éléments que vous le souhaitez et les clics sur ces éléments seront ignorés.

17voto

mishanon Points 618

Vous pouvez utiliser ce simple code :

<a href="" onclick="return false;">add new action</a><br>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X