フォームはまだリスナー関数がfalseを返したにもかかわらず、提出されました
-
12-09-2019 - |
質問
私はこの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上でだと私はサファリ、FirefoxとOperaの上で同じ結果を経験しています。おかげます。
解決
は、MacとPCの両方で機能するソリューションへの2つの非常に有用な答えからの情報を組み合わせます
<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>
所属していません StackOverflow