Подтвердить что ты не робот

Как предотвратить обработку событий по умолчанию в методе onclick?

Как предотвратить дефолт в методе onclick? У меня есть метод, в котором я также передаю пользовательское значение

<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
}
4b9b3361

Ответ 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>

Ответ 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();
              });