Frage

Ich habe den folgenden Code:

function showAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'block';
    document.generic_form.address.style.display = 'block';
    document.generic_form.onsubmit = validateAddrForm;
}

function hideAddrBox() {
    var prompt = document.getElementById('addr_prompt');
    prompt.style.display = 'none';
    document.generic_form.address.style.display = 'none';
    document.generic_form.onsubmit = null;
}

Das Problem ist, dass ich manchmal zusätzliche Funktionen an onSubmit angehängt habe, die ich beibehalten möchte.Ich möchte in der Lage sein, einzelne Funktionen zum onSubmit-Ereignis hinzuzufügen und daraus zu entfernen, und sie nicht nur mit „onsubmit =“ festzulegen.Mit anderen Worten, ich brauche eine Möglichkeit, so etwas zu erreichen:

document.form.onsubmit += function;
document.form.onsubmit -= function;

Irgendwelche Ideen?

War es hilfreich?

Lösung

Verwenden element.addEventListener("eventName", callbackFunction, false) Und element.removeEventListener("eventName", callbackFunction).

Dabei ist eventName der Name des Handlers ohne das „on“.Aus „onsubmit“ wird also „submit“.

Eine Dokumentation der beiden Funktionen finden Sie unter:

Andere Tipps

Quirksmode hat eine wunderbarer Artikel über die erweiterte Registrierung von Veranstaltungen.

Kurzform ist:Sie können mehrere Ereignisse mit binden addEventListener (attachEvent in älteren IE-Versionen).

if (someform.addEventListener) {
  someform.addEventListener('submit', somefunc, false);
} else {
  someform.attachEvent('onsubmit', somefunc);
}

Um sie zu entfernen, können Sie verwenden removeEventListener Und detachEvent jeweils.


Durch ständiges Tippen wird man schnell genervt addEventListener Und attachEvent, und Sie könnten erwägen, generischen Code zu erstellen, um Ereignisse für Sie zu binden.Glücklicherweise hatten andere Programmierer die gleiche Idee und es gibt viele Bibliotheken, die die Ereignisverwaltung elegant handhaben. jQuery ist in der Regel die Bibliothek der Wahl, da das Binden eines Ereignisses so einfach ist wie:

$('#formid').submit(somefunc);

Die generische Ereignisbindungsmethode lautet:

$('#formid').on('submit', somefunc);

Zum Lösen können Sie Folgendes verwenden:

$('#formid').off('submit', somefunc);

Obwohl all dies in der gut dokumentiert ist jQuery-API.

Was ich tun würde, ist eine OnsubMit-Funktion direkt in der Form, die den Rest der Funktionen orchestiert, logisch auf dem, was er tun soll.Am Ende dieser Funktionsausführung können Sie true zurückgeben, wenn Sie mit der Einreichung fortfahren oder false zurückgeben möchten, wenn Sie dies nicht tun.

u kann zwei oder mehr Funktionen für ein Formular wie folgt erwähnen.

<form name="formaname" onsubmit="function1(),function2()">

mehr auf onsubmit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top