13

如果我这样做,我可以很好地防止表单提交的默认值:

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

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

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

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

我现在如何防止违约?

4

3 回答 3

36

同样的方式,其实!

// 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);
<form id="panda" method="post">
    <input type="submit" value="The Panda says..."/>
</form>

注意:使用时不要.addEventListener使用。submitonsubmit

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

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

于 2013-07-17T20:02:37.327 回答
2

您所要做的就是为您的函数添加一个参数并在其中使用它。

var my_func = function(event) {
   
   event.preventDefault();
   
}

里面的参数现在代表来自 addEventListener 的参数。

于 2021-05-20T12:52:12.017 回答
-1

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

document.getElementById('my-form').addEventListener('onsubmit', 
function(event){event.preventDefault();my_func();});
var my_func = function() {
// HOW DO I PREVENT DEFAULT HERE???
// do something
}
于 2018-04-19T08:49:58.667 回答