Domanda

Sto cercando di capire perché questo JavaScript non ferma il modulo venga inviato:

<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 meno che io aggiungere il seguente attributo onsubmit all'elemento 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>

Sembra che il metodo addEventListener da solo dovrebbe fare il trucco. qualche idea? Sono su un Mac e sto sperimentando lo stesso risultato su Safari, Firefox e Opera. Grazie.

È stato utile?

Soluzione

Combinato le informazioni dai due molto utili risposte in una soluzione che funziona sia su Mac e 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>

Altri suggerimenti

Sembra che se si cambia la funzione di

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

Si dovrebbe fare quello che stai cercando.

fonte

Penso che quello che stai cercando è il metodo preventDefault() dell'interfaccia Event per i browser che implementano. Sarà annullare l'invio del modulo nel modo previsto "return false" per.

qui e qui .

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top