¿Cómo evitar el incumplimiento en un método onclick? Tengo un método en el que también paso un 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
fuente
fuente
onLoaded
ano wrap
. O simplemente escriba su propio marcado .html en su lugar.preventDefault
, la pregunta es, cómo "prevenir [el] clic predeterminado" .¡En mi opinión, la respuesta es incorrecta! Preguntó por
event.preventDefault();
cuando simplemente devuelva falso; también llama aevent.preventDefault();
ANDevent.stopPropagation();
!Puedes resolverlo por esto:
<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(); }
fuente
window.event
que no siempre está disponible en todos los navegadores.Intente esto (pero use botones para tales casos si no tiene un
href
valor válido para la degradación elegante )<a href="#" onclick="callmymethod(24); return false;">Call</a>
fuente
return false;
? ¿A qué estamos volviendo en falso?Puede capturar el evento y luego bloquearlo con preventDefault () - funciona con Javascript puro
document.getElementById("xyz").addEventListener('click', function(event){ event.preventDefault(); console.log(this.getAttribute("href")); /* Do some other things*/ });
fuente
Simplemente coloque "javascript: void (0)", en lugar de "#" en la etiqueta href
<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>
fuente
Esto funcionó para mi
<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>
fuente
Puedes usar:
event.stopPropagation();
https://dom.spec.whatwg.org/#dom-event-stoppropagation
fuente
Sería demasiado tedioso alterar los usos de las funciones en todas las páginas html para
return false
.Así que aquí hay una solución probada que parchea solo la función en sí:
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; }
Esto evita correctamente que IE6, IE11 y la última versión de Chrome visiten
href="#"
después de que se complete el controlador de eventos onclick.Créditos:
fuente
Si necesita ponerlo en la etiqueta. No es la mejor solución, pero funcionará.
Asegúrese de poner el evento onclick delante del href. Solo funcionó para mi de esta manera.
<a onclick="return false;" href="//www.google.de">Google</a>
fuente
Otra forma de hacerlo es usar el
event
objeto dentro del atributoonclick
(sin la necesidad de agregar un argumento adicional a la función para pasar el evento)function callmymethod(myVal){ console.log(myVal); }
<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>
fuente
Dale una clase o id al elemento y usa la función jquery unbind ();
$(".slide_prevent").click(function(){ $(".slide_prevent").unbind(); });
fuente