J'ai des liens comme celui-ci:
<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>
et je voudrais faire un preventDefault()
dans myfunc, car un #
sera ajouté dans la barre d'adresse en cliquant sur le lien (sans faire return false;
ni href='javascript:void(0);'
)
est-ce possible ? puis-je obtenir l'événement dans myfunc
Je crois que vous pouvez passer event
dans la fonction inline qui sera l’objet event
de l’événement déclenché dans les navigateurs compatibles W3C (c’est-à-dire que les anciennes versions de IE nécessiteront toujours une détection à l'intérieur de votre fonction de gestionnaire d’événements à regarder window.event
).
function sayHi(e) {
e.preventDefault();
alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>
event
transmise dans le gestionnaire onclick
par un autre élément tel que e
, cliquez sur Exécuter, puis notez que la redirection a lieu après l'alerte (le volet de résultats devient blanc, ce qui montre une redirection).La solution la plus simple est simplement:
<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>
C'est en fait un bon moyen de contourner le cache pour les documents avec un repli pour aucun navigateur compatible JS (pas de contournement de cache si aucun JS)
<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' +
Math.round(new Date().getTime() / 1000);"
href="http://www.domain.com/docs/thingy.pdf">
Si JavaScript est activé, il ouvre le PDF avec une chaîne de requête de contournement du cache, sinon il ouvre simplement le PDF.
Essaye ça:
<script>
$("a").click(function(event) {
event.preventDefault();
});
</script>
<script type="text/javascript">
$('a').click(function(){
return false;
});
<script>
Ajoutez une classe unique aux liens et un javascript qui empêche les liens par défaut avec cette classe:
<a href="#" class="prevent-default"
onclick="$('.comment .hidden').toggle();">Show comments</a>
<script>
$(document).ready(function(){
$("a.prevent-default").click(function(event) {
event.preventDefault();
});
});
</script>
Je pense que lorsque nous utilisons onClick, nous voulons faire quelque chose de différent de celui par défaut. Donc, pour tous vos liens avec onClick:
$("a[onClick]").on("click", function(e) {
return e.preventDefault();
});
Ne pouvez-vous pas simplement supprimer l'attribut href de la balise a?
Vous pouvez accéder à l'événement depuis onclick comme ceci:
<button onclick="yourFunc(event);">go</button>
et à votre fonction javascript, mon conseil est d'ajouter cette instruction de première ligne comme suit:
function yourFunc(e) {
e = e ? e : event;
}
puis utilisez partout e comme variable d'événement
Simple!
onclick="blabla(); return false"
e.preventDefault (); from https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
Ou avoir renvoyer faux de votre méthode.