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

j'ai une ancre avec les attributs à la fois HREF et ONCLICK mis. Si cliqué et Javascript est activé, je veux qu'il seulement exécuter ONCLICK et ignorer HREF . De même, si Javascript est désactivé ou non pris en charge, je veux qu'il suive L'URL HREF et ignore ONCLICK . Ci-dessous est un exemple de ce que je fais, qui exécuterait le JS et suivrait le lien simultanément (habituellement le JS est exécuté et 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 faire cela?

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

70
demandé sur Community 2013-03-25 22:28:47

11 réponses

vous pouvez utiliser la première solution non éditée, si vous mettez le retour en premier dans l'attribut onclick :

<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 /

27
répondu elproduc3r 2017-10-12 00:45:19
    yes_js_login = function() {
         // Your code here
         return false;
    }

si vous retournez false il devrait empêcher l'action par défaut (allant à la href).

Edit: Désolé, mais ne semble pas fonctionner, vous pouvez faire ce qui suit:

<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>
53
répondu Chris Bier 2017-10-12 00:42:16

désactivez simplement le comportement par défaut du navigateur en utilisant preventDefault et passez le event dans votre HTML.

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

yes_js_login = function(e) {
  e.preventDefault();
}
23
répondu Buksy 2017-05-06 07:17:16
<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 assigner classe .ignore-click autant d'éléments que vous aimez et clique sur ces éléments seront ignorés

12
répondu Andrew 2015-12-21 00:55:07

vous pouvez utiliser ce code simple:

<a href="" onclick="return false;">add new action</a><br>
11
répondu mishanon 2016-04-26 06:36:09

, C'est plus simple si vous passez un paramètre d'événement comme ceci:

<a href="#" onclick="yes_js_login(event);">link</a>
function yes_js_login(e) {
    e.stopImmediatePropagation();
}
5
répondu Trigon219 2015-06-05 17:52:17

j'ai résolu une situation où j'avais besoin d'un modèle pour l'élément qui traiterait alternativement une URL régulière ou un appel javascript, où la fonction js a besoin d'une référence à l'élément appelant. Dans javascript, "ceci" fonctionne comme une référence autonome seulement dans le contexte d'un élément de forme, par exemple, un bouton. Je ne voulais pas un bouton, juste l'apparence d'un lien régulier.

exemples:

<a onclick="http://blahblah" href="http://blahblah" target="_blank">A regular link</a>
<a onclick="javascript:myFunc($(this));return false" href="javascript:myFunc($(this));"  target="_blank">javascript with self reference</a>

les attributs href et onClick ont les mêmes valeurs, sauf que j'ajoute "return false" sur onClick quand c'est un appel javascript. Avoir "return false" dans la fonction appelée n'a pas fonctionné.

1
répondu Bo Johanson 2014-08-18 09:24:55

cela pourrait aider. Pas de JQuery nécessaire

<a href="../some-relative-link/file" 
onclick="this.href = 'https://docs.google.com/viewer?url='+this.href; this.onclick = '';" 
target="_blank">

ce code fait ce qui suit: Passer le lien relatif à Google Docs Viewer

  1. Obtenir le lien complet de la version de l'ancre par this.href
  2. ouvrir le lien la nouvelle fenêtre.

donc dans votre cas cela pourrait fonctionner:

<a href="../some-relative-link/file" 
onclick="this.href = 'javascript:'+console.log('something has stopped the link'); " 
target="_blank">
1
répondu marlo 2015-01-31 20:35:32

cela a fonctionné pour moi:

<a href="" onclick="return false;">Action</a>
0
répondu Zero 2017-08-08 14:57:39

dans mon cas, j'avais une condition quand l'utilisateur cliquait sur l'élément" a". La condition était:

si l'autre section avait plus de dix articles, alors l'utilisateur ne devrait pas être redirigé vers une autre page.

Si l'article avait moins de dix articles, puis l'utilisateur doit être redirigé vers une autre page.

la fonctionnalité des éléments" a " dépend de l'autre composante. Le code dans l'événement de clic est le suivant:

var elementsOtherSection = document.querySelectorAll("#vehicle-item").length;
if (elementsOtherSection> 10){
     return true;
}else{
     event.preventDefault();
     return false;
}
0
répondu Jorge Santos Neill 2017-10-11 19:40:01

utiliser comme suit

 onClick="javascript:void(0);anyfunction();"
-1
répondu Karl 2016-11-01 07:15:47