Form wird noch vorgelegt, obwohl Listener-Funktion gibt false zurück
-
12-09-2019 - |
Frage
Ich versuche, herauszufinden, warum dies JavaScript aus nicht die Form stoppt vorgelegt werden:
<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>
Wenn ich das folgende onsubmit Attribut in das Formularelement hinzufügen:
<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>
Es scheint, wie die addEventListener Methode allein sollte es tun. Irgendwelche Gedanken? Ich bin auf einem Mac, und ich bin das gleiche Ergebnis auf Safari, Firefox und Opera zu erleben. Danke.
Lösung
, um die Informationen aus den zwei sehr hilfreichen Antworten in eine Lösung kombiniert, die auf Mac und PC funktioniert:
<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>
Andere Tipps
Sieht aus wie wenn Sie Ihre Funktion
ändernvar code = function(e) {
e.preventDefault();
}
Es sollte das tun, was Sie suchen.
Ich denke, was Sie suchen ist die preventDefault()
Methode der Event
Schnittstelle für Browser, die es umzusetzen. Es wird die Formulareinreichung in der Art und Weise kündigen Sie „return false
“ zu erwarten.
<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>