Forma aún se sometió a pesar de que la función de detector devuelve falso
-
12-09-2019 - |
Pregunta
Estoy tratando de averiguar por qué este JavaScript no se detiene la forma de ser presentado:
<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>
A menos que añado el siguiente atributo onsubmit al elemento de formulario:
<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>
Parece que el método addEventListener solo debe hacer el truco. ¿Alguna idea? Estoy en un Mac y yo estoy experimentando el mismo resultado en Safari, Firefox y Opera. Gracias.
Solución
combinó la información de las dos respuestas muy útiles en una solución que funciona tanto en Mac y 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>
Otros consejos
Parece que si cambia su función para
var code = function(e) {
e.preventDefault();
}
Se debe hacer lo que usted está buscando.
Creo que lo que estás buscando es el método de la interfaz preventDefault()
Event
para los navegadores que implementan. Se cancelará el envío del formulario en la forma que se esperaba "return false
" a.
<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>