Como prevenir o default em um método onclick? Tenho um método em que também estou passando um valor personalizado
<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
}
javascript
coure2011
fonte
fonte
onLoaded
parano wrap
. Ou simplesmente escreva sua própria marcação .html.preventDefault
, a pergunta é, como "prevenir [o] clique padrão" .Na minha opinião, a resposta está errada! Ele perguntou
event.preventDefault();
quando você simplesmente retornou falso; chamaevent.preventDefault();
ANDevent.stopPropagation();
também!Você pode resolver assim:
<a href="#" onclick="callmymethod(event, 24)">Call</a>
function callmymethod(e, myVal){ //doing custom things with myVal //here I want to prevent default e = e || window.event; e.preventDefault(); }
fonte
window.event
que nem sempre está disponível em todos os navegadores.Tente isto (mas use botões para tais casos se você não tiver um
href
valor válido para degradação normal )<a href="#" onclick="callmymethod(24); return false;">Call</a>
fonte
return false;
? Para o que estamos retornando falso?Você pode capturar o evento e bloqueá-lo com preventDefault () - funciona com Javascript puro
document.getElementById("xyz").addEventListener('click', function(event){ event.preventDefault(); console.log(this.getAttribute("href")); /* Do some other things*/ });
fonte
Basta colocar "javascript: void (0)", no lugar de "#" na tag href
<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>
fonte
Isso funcionou para mim
<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>
fonte
Você pode usar:
event.stopPropagation();
https://dom.spec.whatwg.org/#dom-event-stoppropagation
fonte
Seria muito tedioso alterar o uso de funções em todas as páginas html para
return false
.Portanto, aqui está uma solução testada que corrige apenas a própria função:
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; }
Isso impede corretamente que o IE6, o IE11 e o Chrome mais recente visitem
href="#"
após a conclusão do manipulador de eventos onclick.Créditos:
fonte
Se você precisar colocá-lo na tag. Não é a melhor solução, mas funcionará.
Certifique-se de colocar o evento onclick na frente do href. Só funcionou para mim desta forma.
<a onclick="return false;" href="//www.google.de">Google</a>
fonte
Outra maneira de fazer isso é usar o
event
objeto dentro do atributoonclick
(sem a necessidade de adicionar um argumento adicional à função para passar o evento)function callmymethod(myVal){ console.log(myVal); }
<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>
fonte
Dê uma classe ou id ao elemento e use a função jquery unbind ();
$(".slide_prevent").click(function(){ $(".slide_prevent").unbind(); });
fonte