为什么preventDefault()不起作用?

时间:2016-03-21 18:48:47

标签: javascript

到目前为止,我一直试图让它运转起来没有运气。如果我使用return false;它有效,但没有预防默认,有什么我想念的吗?谢谢。

<html>
<meta http-equiv = "Content-Type" content = "text/html; charset = utf-8">
<script>
function hit(e) {
e.preventDefault();

}
</script>

<body>
<form onsubmit="hit()">
  <input type="submit" value="submit" />
</form>
<div id="d"> </div>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

事件对象是事件处理函数的第一个参数,即onsubmithit是您从onsubmit调用的函数,并且您没有传递任何参数。

使用JavaScript绑定事件处理程序,而不是HTML。

addEventListener("load", bind_event_handlers);
function bind_event_handlers(e) {
    document.querySelector("form").addEventListener("submit", hit);
    function hit(e) {
        e.preventDefault();
    }
}

答案 1 :(得分:2)

您必须在内联事件处理程序

中显式传递event对象
<form onsubmit="hit(event)">

但建议对此类任务使用专用事件处理程序,例如

document.querySelector("form").addEventListener("submit",function(e){
  e.preventDefault();
},false)

答案 2 :(得分:1)

您也可以在onsubmit内使用return来阻止提交表单:

<script>
function hit() {
return false; // Use 'true' to submit the form

}
</script>

<body>
<form onsubmit="return hit();">
  <input type="submit" value="submit" />
</form>
<div id="d"> </div>

答案 3 :(得分:-4)

onsubmit更改为onsubmit="hit"