javascript 如何防止表单提交默认?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17709140/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 09:17:27  来源:igfitidea点击:

How to prevent default on form submit?

javascript

提问by TK123

If I do this I can prevent default on form submit just fine:

如果我这样做,我可以防止表单默认提交就好了:

document.getElementById('my-form').onsubmit(function(e) {
   e.preventDefault();
   // do something
});

But since I am organizing my code in a modular way I am handling events like this:

但是由于我以模块化方式组织我的代码,所以我正在处理这样的事件:

document.getElementById('my-form').addEventListener('onsubmit', my_func);

var my_func = function() {
   // HOW DO I PREVENT DEFAULT HERE???
   // do something
}

How can I prevent default now?

我现在如何防止默认?

回答by Thank you

The same way, actually! demo

同样的方式,其实!演示

Some HTML

一些 HTML

<form id="panda" method="post">
    <input type="submit" value="The Panda says..."/>
</form>

Your JavaScript

你的 JavaScript

// your function
var my_func = function(event) {
    alert("me and all my relatives are owned by China");
    event.preventDefault();
};

// your form
var form = document.getElementById("panda");

// attach event listener
form.addEventListener("submit", my_func, true);


Note: when using .addEventListeneryou should use submitnot onsubmit.

注意:使用.addEventListener时应该使用submitnot onsubmit

Note 2: Because of the way you're defining my_func, it's important that you call addEventListenerafteryou define the function. JavaScript uses hoistingso you need to be careful of order of things when using varto define functions.

注意 2:由于您定义的方式,在定义函数my_func调用很重要。JavaScript 使用提升,因此在用于定义函数时需要注意事物的顺序。addEventListenervar

Read more about addEventListenerand the EventListenerinterface.

阅读有关addEventListenerEventListener接口的更多信息。

回答by lucaspiaso

i known this is old, but just for the sake of it. try

我知道这是旧的,但只是为了它。尝试

document.getElementById('my-form').addEventListener('onsubmit', 
function(event){event.preventDefault();my_func();});
var my_func = function() {
// HOW DO I PREVENT DEFAULT HERE???
// do something
}