Problembeschreibung

Evtl. ist Ihnen als Programmierer einer Webseite schon der Effekt bei der Arbeit mit FireFox aufgefallen, dass sich Formulare nicht so verhalten wie Sie es beabsichtigen. Formularfelder werden mit obskuren Werten belegt oder voneinander abhängige Formularelemente liefern unstimmige Kombinationen. Nicht selten kommt es z.B. beim Absenden von Konfigurationsdialogformular in den Serverscripts zu Fehlern weil unsinnige Werte verarbeitet werden sollen. Die Fehlersuche gestaltet sich schwer, da es durchaus auch versteckt Felder betreffen kann. Alles ist scheinbar ein großes Rätsel.

Provozierbar treten diese Vorausfüllfehler z.B. dann auf, wenn man ein Ajax-Formular hat bei dem Änderungen im Formular immer auch zur Aktualisierung des Formulars, um z.B. voneinander abhängige Elemente neu zu befüllen. Wenn man nun über die Historie-Buttons mal eine Seite zurückblättern und wieder hin zur Formularseite, dann passiert oben geschriebener Effekt sehr gerne.

 



 

 

Ursache dieses Fehlverhaltens

Beim Formularaufruf werden durch FF standardmäßig Eingabefelder vorausgefüllt, wenn FF glaubt hierfür in seiner Formularhistorie geeignete Einträge gefunden zu haben. Das ist auch ganz hilfreich und funktioniert meistens tadellos. Nur leider verursacht dieser Automatismus mitunter auch o.g. Fehlverhalten der Formulare, weil a) in Felder Inhalte landen die dort nicht hineingehören oder b) gerade im eben beschriebenen Fall von Formularfeldern die voneinander abhängig reagieren sollen, fast zuverlässig scheitert (Bsp.: Sie haben in einer Selektionsliste die Automarken, von FF voreingestellt wird aus einer früheren Selektion AUDI, eine weitere Dropdownliste soll die Modelle enhalten und liefert aber in einer VM-Typen-Liste den GOLF). Das muss knirschen.

 

Problemlösung

Ich hatte selbst lange versucht diese kritischen Formulare z.B. über JavaScript so zu resetten, dass ein sauberer Urzustand für das Formular entsteht. Dann habe ich versucht die Formularfelder quasi unique zu benennen, damit FF ja keine "bekannten" Forularfelder findet. Der Aufwand hierfür ist immer noch recht hoch gegenüber der Lösung, auf die ich fast zufällig gestoßen bin, bei der google-Suche nach autocomplete in einem anderen Kontext.

Hier nun die einfache Lösung:

In das kritische Formularelement oder gleich in den FORM-Tag selbst bauen wir das HTML-Attribut autocomplete ein und übergeben den Value off. Passiert das im FORM-Tag, werden auch alle Formularelemente für die Autovervollständigung gesperrt. Ist einem dies zu restriktiv, setzt man das Attribut nur im einem oder mehreren Input- oder select-Feldern.

Bsp:

<form autocomplete="off" action="">

<input type="text" name="name" autocomplete="off">

Hier noch die Quelle auf die ich zufällig gestoßen war zum vertiefenden Nachlesen: SELFHTML.