input onChange Problem
Sebastian Becker
- javascript
Hallo,
ich möchte gerne Formularwerte in Cookies speichern, damit diese automatisch in weiteren Formularen mit den gleichen Feldern erscheinen. Das funktioniert mit einem kleinen Skript so weit ganz prima, bis auf ein kleines Problem:
Im Internet Explorer gibt es eine Komfortfunktion, mit der man Formularfeldwerte aus einem Ausklappmenü auswählen und einfügen kann. In diesem Falle scheint aber "onChange" nicht zu "feuern" mit der Konsequenz, daß auch das Cookie nicht gesetzt wird.
Ist dies ein Bug und falls ja: in welchen Browsern außer IE 5.5 tritt er auf und wie kann ich ihn umgehen - oder habe ich nur irgendetwas übersehen?
So sehen übrigens meine Felder aus:
input name="customerid" id="customerid" onChange="saveValue(this)"
Danke für alle Hinweise,
Grüße aus berlin
Sebastian Becker
MoiN!
Im Internet Explorer gibt es eine Komfortfunktion, mit der man Formularfeldwerte aus einem Ausklappmenü auswählen und einfügen kann. In diesem Falle scheint aber "onChange" nicht zu "feuern" mit der Konsequenz, daß auch das Cookie nicht gesetzt wird.
Setze das Cookie einfach vor dem Absenden des Formulars "onsubmit".
- Sven Rautenberg
Hallo,
danke für den Vorschlag zur Symptombekämpfung. ;-)
Setze das Cookie einfach vor dem Absenden des Formulars "onsubmit".
Mit Hilfe von "this" wird ja der Wert des jeweiligen Feldes ausgelesen und in das Cookie geschrieben. Das geht natürlich nicht beim setzen "onsubmit".
Eine Schleifenkonstruktion zum Auslesen aller Feldinhalte wäre erstens etwas aufwendig und zweitens soll das Cookie auch ohne submit gesetzt werden. Wenn zB. jemand auf der deutschen Seite anfängt, Eingaben zu machen und sich zwischendurch überlegt, daß er lieber das englische Formular benutzen will, sollen die eingegebenen Werte übernommen werden.
Grüße,
Sebastian
MoiN!
Eine Schleifenkonstruktion zum Auslesen aller Feldinhalte wäre erstens etwas aufwendig und zweitens soll das Cookie auch ohne submit gesetzt werden. Wenn zB. jemand auf der deutschen Seite anfängt, Eingaben zu machen und sich zwischendurch überlegt, daß er lieber das englische Formular benutzen will, sollen die eingegebenen Werte übernommen werden.
Da die IE-Komfortfunktion auch auch auf der neuen Seite noch funktionieren wird (es sei denn, der Browser stürzt ab, und der User muß einen anderen nehmen), würde ich dieses Problem als nicht so gravierend erachten.
Aber das Cookie onsubmit auch zu schreiben, ist sinnvoll. Es macht _dir_ Aufwand, aber auch nur einmal. Und die DOM-Struktur kommt dir sogar noch entgegen: Alle Formular-Elemente sind in einem Array angeordnet, auf das man via Namen zugreifen _kann_, aber nicht muß. So kannst du eine nette Schleife programmieren, welche das komplette Formular ausliest und im Cookie speichert. Oder dein Auswerteskript macht das, wenn die Ergebnisseite ausgegeben wird (praktisch onaftersubmit ;) ).
- Sven Rautenberg
Hallo,
Da die IE-Komfortfunktion auch auch auf der neuen Seite noch funktionieren wird (es sei denn, der Browser stürzt ab, und der User muß einen anderen nehmen), würde ich dieses Problem als nicht so gravierend erachten.
Das stimmt, ich bin aber manchmal Perfektionist ;-) ...
Aber das Cookie onsubmit auch zu schreiben, ist sinnvoll. Es macht _dir_ Aufwand, aber auch nur einmal. Und die DOM-Struktur kommt dir sogar noch entgegen: Alle Formular-Elemente sind in einem Array angeordnet, auf das man via Namen zugreifen _kann_, aber nicht muß. So kannst du eine nette Schleife programmieren, welche das komplette Formular ausliest und im Cookie speichert. Oder dein Auswerteskript macht das, wenn die Ergebnisseite ausgegeben wird (praktisch onaftersubmit ;) ).
Ich werde das mal ausprobieren und das Cookie vielleicht auch oder nur mit "body onUnload" aufrufen, so müßte es eigentlich klappen.
Danke für die Hilfe, Grüße,
Sebastian Becker