7

この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要素に追加しない限り:

<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でも同じ結果が得られます。ありがとう。

4

3 に答える 3

8

2つの非常に役立つ回答からの情報を組み合わせて、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>
于 2009-11-30T15:34:30.097 に答える
6

関数をに変更した場合のように見えます

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

それはあなたが探していることをするはずです。

ソース

于 2009-06-08T23:20:42.850 に答える
2

あなたが探しているのは、それを実装するブラウザ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>
于 2009-06-08T23:34:35.553 に答える