Flavio: Onchange Event

Wann genau wird ein Change Event ausgelöst?
Wird er auch ausgelöst wenn ich mit Javascript den inhalt eines Feldes ändere?

Bei mir geschiet nämlich nichts...

Was muss ich tun?

(
so ändere ich den Wert:

opener.document.mainform.SaveOK.value="OK";

und so ist das Feld SaveOk definiert:

<input type=hidden name='SaveOK' value='No' onchange=Hallo()>

(Hallo() ist nur eine alert-Box)
)

Hoffe auf eure Hilfe...

Dank im Voraus

Flavio

  1. Hallo Flavio,

    das onChange-Event tritt nicht bei allen Formularelementen auf, sicher ist es nur bei text, textfeld und select. Schau evlt mal in die Doku.

    Je nach Browser tritt es evtl. noch bei anderen Feldern auf, bei N4 glaube ich nur bei 2Sachen. Aber beim hidden-feld wird es meines Wissens nicht erzeugt.

    Michael R. II

  2. Wann genau wird ein Change Event ausgelöst?
    Wird er auch ausgelöst wenn ich mit Javascript den inhalt eines Feldes ändere?

    Ein Event wird nur ausgelöst, wenn der BENUTZER irgendwas macht. Wenn Javascript was macht mit irgendwelchen Formularfeldern zum Beispiel, dann werden keine Events ausgelöst. Und das ist auch ganz gut, denn sonst könnte es bei unvorsichtiger Programmierung sehr leicht zu unabbrechbaren Endlosschleifen kommen, weil das eine Skript das andere Feld ändert, welches wieder das eine Feld ändert, welches wieder das andere Feld ändert....

    opener.document.mainform.SaveOK.value="OK";

    <input type=hidden name='SaveOK' value='No' onchange=Hallo()>
    (Hallo() ist nur eine alert-Box)

    Ich stelle die Sinnfrage (vergleiche mit oben)!

    Wenn der Benutzer irgenwas macht, möchte man vielleicht mit dem Behandeln gewisser Events darauf reagieren. Beispielsweise möchte man vielleicht irgendwelche Radioboxen ankreuzen, wenn eine bestimmte Auswahl in einem Select-Feld vorgenommen wurde.

    Wenn du aber mit Javascript ein Feld änderst, dann bist du doch schon am Drücker. Entweder machst du nach der Änderung in der gleichen Funktion das, was du wolltest, oder du rufst die Funktion auf, die "onChange" (was ja mit Eventhandler nicht geht) irgendwas tun soll.

    In deinem Beispiel wäre das mit
    opener.Hallo();
    innerhalb des Popups, und eben direkt nach der Änderung, möglich.

    Und merken: Eventhandler sind dafür da, bei Benutzeraktionen die Kontrolle zu erlangen. Wenn man sie (die Kontrolle) aber schon hat, muß man selber die Kontrolle weitergeben an andere Funktionen.

    - Sven Rautenberg