HTML autocomplete?
Ich habe ein Verständnisproblem mit der autocomplete-Funktion für HTML-Formulare.
Genauer gesagt möchte ich erreichen, dass der Nutzer beim Ausfüllen eines Formulars z.B. bei Vorname, Nachname und Email vom Browser automatisch vorgeschlagen bekommt, was er bei früheren Sessions eingegeben hat.
Scheinbar ist dafür der Parameter name="xxx" innerhalb des <input> Tags maßgebend. Beispiel:
Email: <input name="email" ...
Vorname: <input name="given-name" ...
Nachname: <input name="family-name"
Nun habe ich mir andere Websiten angesehen. Die benutzen z.B. für Vor- und Nachname völlig andere Schlüsselworte. So z.B.
- für Vorname: name="Vorname"
- für Nachname: name="Nachname"
Ist es also egal, welches Schlüsselwort verwendet wird? D.h. merkt sich der Browser die alten Eingaben für jedes beliebige Schlüsselwort?
3 Antworten
Hi Rammstein53,
du kannst in HTML das autocomplete-Attribut verwenden. Damit lassen sich Angaben wiederverwenden. Hier mehr zum Thema: https://wiki.selfhtml.org/wiki/HTML/Attribute/autocomplete
Eine andere Lösung wäre die Nutzung von JavaScript und der Web Storage API. Damit lassen sich Eingaben speichern und wieder laden. So kann man den User die Möglichkeit bieten einen Speicher-Hacken zu setzen.
Ich schlage vor du solltest dir mal das autocomplete Attribut anschauen.
Ein guten Anfang findest du hier https://www.w3schools.com/tags/att_input_autocomplete.asp
Technischer hier: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
Du gehst das falsch an. An sich ist es egal was in name="email" oder value="email" steht. Diese Werte sind nicht für die Autocomplete Funktion zuständig. Funktionieren tun sie aber trotzdem (mehr oder weniger).
Der Browser sieht nun ein HTML Tag mit dem Wert "email", also interpretiert dieser daraus, dass hier die E-Mail rein sollte. Aber die Betonung liegt auf interpretiert, diese kann auch Fehlerhaft sein.
Der richtige Weg wäre die passenden autocomplete Attribute zu verwenden.
Vorab, hier kannst du alle Werte dir anschauen: https://www.w3schools.com/tags/att_input_autocomplete.asp
Der richtige Weg für z.B. ein E-Mail Feld ist also folgender:
<input type="text" name="ist_egal" value="such_dir_was_aus" autocomplete="email" />
Mit autocomplete definierst du was der Browser eingeben soll. Ist autocomplete nicht definiert interpretiert der Browser lediglich welcher Wert hier eingegeben werden sollte. Benutze daher bei jedem Feld autocomplete.
Pro Tipp 1: Gehen wir mal davon aus du verkaufst Tickets für einen Club. Der Nutzer muss Vorname, Name, E-Mail etc und die Anzahl der Tickets eingeben die er kaufen möchte, dann sollte das Feld für die Ticket Anzahl nicht automatisch ausgefüllt werden, denn diesen Wert kann dein Browser nicht wissen. Im worst case steht dann irgend ne Zahl drin, die der Nutzer gar nicht will, übersiehts und schickts ab...
Benutze dann autocomplete="off"
<input type="text" name="ist_egal" value="Anzahl der Tickets" autocomplete="off" />
Der Browser wird dieses Feld dann nicht automatisch ausfüllen und der Nutzer muss selbst eine Angabe machen (und ja man kann sich jz darüber streiten, dass ich type="text" und nicht type="number" verwendet habe, aber es ist ja nur ein Beispiel).
Pro Tipp 2: Verwende für E-Mail inputs type="text" und validiere den Wert mit RegEx (da gibts zig sehr gute RegEx Codes dazu). input="email" ist leider extremst schlecht (und zwar wirklich bodenlos schlecht) umgesetzt und validiert die E-Mail nicht richtig, man kann trotzdem eine ungültige E-Mail eingeben (z.B. "test.!=?/@e.c" ist laut input="email" eine gültige E-Mail-Adresse...).