110 votes

Comment empêcher la gestion des événements par défaut dans une méthode onclick ?

Comment empêcher les défauts dans une méthode onclick ? J'ai une méthode dans laquelle je passe également une valeur personnalisée.

<a href="#" onclick="callmymethod(24)">Call</a>

function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
}

9voto

Alan Sutherland Points 408

Cela a fonctionné pour moi

<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>

9voto

th31 Points 131

Une autre façon de procéder est d'utiliser l'option event à l'intérieur de l'attribut onclick (sans avoir besoin d'ajouter un argument supplémentaire à la fonction pour passer l'événement)

function callmymethod(myVal){
    console.log(myVal);
}

<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>

7voto

Vous pouvez utiliser :

event.stopPropagation();

https://dom.spec.whatwg.org/#dom-event-stoppropagation

1voto

Vadzim Points 4460

Il serait trop fastidieux de modifier l'utilisation des fonctions dans toutes les pages html pour return false .

Voici donc une solution testée qui ne corrige que la fonction elle-même :

function callmymethod(myVal) {
    // doing custom things with myVal

    // cancel default event action
    var event = window.event || callmymethod.caller.arguments[0];
    event.preventDefault ? event.preventDefault() : (event.returnValue = false);

    return false;
}    

Cela empêche correctement IE6, IE11 et le dernier Chrome de visiter href="#" après la fin du traitement de l'événement onclick.

Crédits :

0voto

Matix Points 89

Si vous devez le faire, mettez-le dans l'étiquette. Ce n'est pas la meilleure solution, mais elle fonctionne.

Assurez-vous que vous mettez l'événement onclick devant le href. Cela n'a fonctionné que pour moi de cette façon.

<a onclick="return false;" href="http://stackoverflow.com//www.google.de">Google</a>

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