Как предотвратить обработку событий по умолчанию в методе onclick?
Как предотвратить дефолт в методе onclick? У меня есть метод, в котором я также передаю пользовательское значение
<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
}
Ответы
Ответ 1
Пусть ваш обратный вызов возвращает false
и передайте это обработчику onclick
:
<a href="#" onclick="return callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
return false;
}
Однако для создания поддерживаемого кода вы должны воздерживаться от использования "встроенного Javascript" (то есть: кода, который находится непосредственно в теге элемента) и изменять поведение элемента с помощью включенного исходного файла Javascript (он называется ненавязчивый Javascript).
Наценка:
<a href="#" id="myAnchor">Call</a>
Код (отдельный файл):
// Code example using Prototype JS API
$('myAnchor').observe('click', function(event) {
Event.stop(event); // suppress default click behavior, cancel the event
/* your onclick code goes here */
});
Ответ 2
Try
<a href="#" onclick="callmymethod(24); return false;">Call</a>
Ответ 3
На мой взгляд, ответ неверный! Он попросил event.preventDefault();
когда вы просто возвращаете false; он вызывает event.preventDefault();
AND event.stopPropagation();
также!
Вы можете решить это следующим образом:
<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();
}
Ответ 4
Вы можете поймать событие, а затем заблокировать его с помощью preventDefault() - работает с чистым Javascript
document.getElementById("xyz").addEventListener('click', function(event){
event.preventDefault();
console.log(this.getAttribute("href"));
/* Do some other things*/
});
Ответ 5
Просто поместите "javascript: void (0)" вместо "#" в теге href
<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>
Ответ 6
Это сработало для меня
<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>
Ответ 7
Ты можешь использовать:
event.stopPropagation();
https://dom.spec.whatwg.org/#dom-event-stoppropagation
Ответ 8
Было бы слишком утомительно изменять использование функций на всех html-страницах, чтобы return false
.
Итак, вот проверенное решение, которое исправляет только саму функцию:
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;
}
Это правильно предотвращает посещение IE6, IE11 и последней версии Chrome href="#"
после завершения обработчика события onclick.
Кредиты:
Ответ 9
Дайте классу или id элементу и используйте функцию jquery unbind();
$(".slide_prevent").click(function(){
$(".slide_prevent").unbind();
});