我试图找出为什么这个JavaScript不能阻止提交表单:

<form action="http://www.example.com" id="form">
    <input type="text" />
    <input type="submit" />
</form>

<script>
var code = function () {
    return false;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
    element.addEventListener("submit", code, false);
}
</script>

除非我下面onsubmit属性添加到窗体元素:

<form action="http://www.example.com" id="form" onsubmit="return false">
    <input type="text" />
    <input type="submit" />
</form>

<script>
var code = function () {
    return false;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
    element.addEventListener("submit", code, false);
}
</script>

好像addEventListener方法单独应达到目的。有什么想法吗?我在Mac上,我遇到了在Safari,Firefox和Opera相同的结果。感谢。

有帮助吗?

解决方案

从合并两个非常有用的答案成Mac和PC上工作的解决方案的信息:

         
<script>
var code = function (eventObject) {
    if (eventObject.preventDefault) {
        eventObject.preventDefault();
    } else if (window.event) /* for ie */ {
        window.event.returnValue = false;
    }
    return true;
};
var element = window.document.getElementById("form");
if (element.addEventListener) {
    element.addEventListener("submit", code, false);
} else if (element.attachEvent) {
    element.attachEvent("onsubmit", code);
}
</script>

其他提示

看来,如果你改变你的功能,像

var code = function(e) {
    e.preventDefault();
}

应该做你要找的东西。

我想你要找的是什么preventDefault()界面的实现它的浏览器Event方法。这将取消表单提交你预计“return false”的方式。

更多此处这里

<script type="text/javascript">
 var code = function (evt) {
            if (evt.preventDefault) {
                evt.preventDefault();
            }
            return false;
};
window.onload = function() {
    var element = window.document.getElementById("form");
    if (element.addEventListener) {
        element.addEventListener("submit", code, false);
    }
};
</script>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top