Maddy: Formularfelder auf Veränderung prüfen

Hi,

ich schreibe an einem Formular, das bei Änderung eines bestimmten Feldes (onChange) sich Daten aus der DB vom Server holt, diese in einige andere Felder einträgt und danach wieder den Benutzer weiter ausfüllen lässt.

Nun hab ich zwei Probleme:
erstens: onChange reagiert ja nur bei Benutzung der Mouse, sprich der Benutzer muss mit einem Klick irgendwo anders hin das Event auslösen. Gängige Praxis ist es aber, längere Masken mit der Tastatur, also Tab zu navigieren und schon reagiert mein Handler nicht mehr. Alternativ hab ich schon onfocus() probiert, aber ich brauche ich Eingabe aus dem Feld, das tut so also auch nicht. Wie kann ich also nach Änderung des Feldes das Formular absenden, auch wenn die Mouse nicht benutzt wird?

zweitens: die Änderungen, die mein Skript in das Formular einträgt, sollen notfalls vom Benutzer noch geändert werden können, ich kann sie also nicht sperren. Andererseits möchte ich den User aber auch nicht grade einladen, die Felder zu ändern. Wie kann ich den Focus direkt aufs nächste auszufüllende Feld setzen?. Da gibts was mit document.form.focus(), aber ich hab es nicht zum Laufen bekommen.

Für Ideen und Vorschläge wäre ich dankbar
Gruss Maddy

  1. hi,

    erstens: onChange reagiert ja nur bei Benutzung der Mouse, sprich der Benutzer muss mit einem Klick irgendwo anders hin das Event auslösen. Gängige Praxis ist es aber, längere Masken mit der Tastatur, also Tab zu navigieren und schon reagiert mein Handler nicht mehr.

    Das wäre mir neu. Das Element muss nur den Fokus an ein anderes Element verlieren, dann sollte onChange feuern. In welchem Browser (und ggf. mit welchem Code) beobachtest du ein abweichendes Verhalten?

    zweitens: die Änderungen, die mein Skript in das Formular einträgt, sollen notfalls vom Benutzer noch geändert werden können, ich kann sie also nicht sperren. Andererseits möchte ich den User aber auch nicht grade einladen, die Felder zu ändern. Wie kann ich den Focus direkt aufs nächste auszufüllende Feld setzen?. Da gibts was mit document.form.focus(), aber ich hab es nicht zum Laufen bekommen.

    focus ist keine Methode des Formulars, sondern seiner Elemente.
    Du müsstest vom aktuellen Feld ausgehend (das dieses "Betreten" wurde, verrät dir der auf ihm ausgelöste Eventhandler onfocus) das nächste Feld im Formular ermitteln - und dann für dieses die focus-Methode aufrufen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }