如何防止 onclick 方法中的默认事件处理?

IT技术 javascript
2021-01-30 06:45:02

如何防止 onclick 方法中的默认值?我有一个方法,我也在其中传递自定义值

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

让您的回调返回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 */
});
@AamirAfridi 是的,它正在工作。您应该调整您的小提琴并更改onLoadedno wrap. 或者干脆编写您自己的 .html 标记。
2021-03-13 06:45:02
@vp_arth 为此使用“CSS 点击”。看看这个问题
2021-03-22 06:45:02
请看下面的答案!“在我看来,答案是错误的!他要求 event.preventDefault(); 当你简单地返回 false 时;它调用 event.preventDefault(); AND event.stopPropagation(); 以及!”
2021-03-28 06:45:02
@LinusKleen,也请说,在这种情况下如何防止点击
2021-03-31 06:45:02
挑剔,OP的问题从来没有提到preventDefault,问题是,如何“防止[the]默认点击”
2021-04-04 06:45:02

在我看来答案是错误的!他问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();
}
正如@LinusKleen 所说,window.event 已被弃用。developer.mozilla.org/en-US/docs/web/api/window/event
2021-03-23 06:45:02
您所依赖的window.event并非总是跨浏览器可用。
2021-03-31 06:45:02
编辑添加:事件=事件|| 窗口事件;
2021-03-31 06:45:02

试试这个(但请对这样的情况下使用的按钮,如果你没有一个有效href的value优雅降级

<a href="#" onclick="callmymethod(24); return false;">Call</a>
它对我有用,但你能解释一下为什么你必须这样做return false;吗?我们甚至返回 false 的是什么?
2021-03-31 06:45:02
好极了。我想要同样的 event.preventDefault();
2021-04-04 06:45:02
您可以只返回而不是返回 false,返回将避免链接导航到 href。从技术上讲,我们应该在这种情况下使用按钮。
2021-04-07 06:45:02

您可以捕获事件,然后使用 preventDefault() 阻止它——使用纯 Javascript

document.getElementById("xyz").addEventListener('click', function(event){
    event.preventDefault();
    console.log(this.getAttribute("href"));
    /* Do some other things*/
});

只需放置“javascript:void(0)”,代替 href 标签中的“#”

<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>