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.

¿Fue útil?

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.

fuente

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.

aquí y aquí .

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top