
matt b
Bei Verwendung der xhtml1-transitional.dtd
doctype und sammelt eine Kreditkartennummer mit dem folgenden HTML
<input type="text" id="cardNumber" name="cardNumber" autocomplete="off"/>
wird eine Warnung auf dem W3C-Validator kennzeichnen:
es gibt kein Attribut “autocomplete”.
Gibt es eine W3C / Standards-Möglichkeit, die automatische Vervollständigung des Browsers für sensible Felder in einem Formular zu deaktivieren?

Nick Presta
Hier ist ein guter Artikel vom MDC, der die Probleme (und Lösungen) der automatischen Vervollständigung von Formularen erklärt. Microsoft hat etwas Ähnliches veröffentlicht Hierauch.
Um ehrlich zu sein, wenn dies für Ihre Benutzer wichtig ist, scheint es angemessen, Standards auf diese Weise zu „brechen“. Zum Beispiel verwendet Amazon ziemlich häufig das Attribut „Autocomplete“, und es scheint gut zu funktionieren.
Wenn Sie die Warnung vollständig entfernen möchten, können Sie das Attribut mithilfe von JavaScript auf Browser anwenden, die dies unterstützen (IE und Firefox sind die wichtigsten Browser). someForm.setAttribute( "autocomplete", "off" ); someFormElm.setAttribute( "autocomplete", "off" );
Schließlich, wenn Ihre Website HTTPS verwendet, schaltet IE automatisch die automatische Vervollständigung aus (so wie einige andere Browser, soweit ich weiß).
Aktualisieren
Da diese Antwort immer noch einige Upvotes erhält, wollte ich nur darauf hinweisen, dass Sie in HTML5 das Attribut „autocomplete“ für Ihr Formularelement verwenden können. Siehe die Dokumentation auf W3C dafür.

Henrik Paul
Ich wäre sehr überrascht, wenn W3C einen Weg vorgeschlagen hätte, der mit (X)HTML4 funktioniert. Die Autocomplete-Funktion ist vollständig browserbasiert und wurde in den letzten Jahren eingeführt (lange nachdem der HTML4-Standard geschrieben wurde).
Wäre aber nicht überrascht, wenn HTML5 einen hätte.
Bearbeiten: Wie ich dachte, HTML5 tut habe das Merkmal. Um Ihre Seite als HTML5 zu definieren, verwenden Sie den folgenden Doctype (dh: setzen Sie dies als allerersten Text in Ihren Quellcode). Beachten Sie, dass nicht alle Browser diesen Standard unterstützen, da es sich noch um einen Entwurf handelt.
<!DOCTYPE html>

RuudKok
HTML4: Nein
HTML5: Jawohl
Das Autocomplete-Attribut ist ein Aufzählungsattribut. Das Attribut hat zwei Zustände. Die an Schlüsselwort ordnet dem on-Zustand und dem zu aus
Schlüsselwort wird dem Aus-Zustand zugeordnet. Das Attribut kann auch weggelassen werden. Der Standardwert für den fehlenden Wert ist der an Zustand. Die aus state gibt an, dass für Formularsteuerelemente im Formular standardmäßig der Feldname für das automatische Ausfüllen auf festgelegt ist aus; Der Ein-Zustand gibt an, dass Formularsteuerelemente im Formular standardmäßig ihre haben autofill
Feldname auf “on” gesetzt.
Referenz: W3
Nein, aber die automatische Vervollständigung des Browsers wird oft ausgelöst, wenn das Feld dasselbe enthält name
Attribut als zuvor ausgefüllte Felder. Wenn Sie einen cleveren Weg finden könnten, um a zu haben randomisierter Feldnamewäre die automatische Vervollständigung nicht in der Lage, zuvor eingegebene Werte für das Feld abzurufen.
Wenn Sie einem Eingabefeld einen Namen wie “email_<?= randomNumber() ?>
“, und lassen Sie dann das Skript, das diese Daten empfängt, die POST- oder GET-Variablen durchlaufen und nach etwas suchen, das dem Muster entspricht “email_[some number]
“, könnten Sie das durchziehen, und das hätte (praktisch) garantierten Erfolg, unabhängig vom Browser.

David Wasser
Nein, hier ist ein guter Artikel Mozila-Wiki.
Ich würde weiterhin das ungültige verwenden attribute
. Ich denke, hier sollte der Pragmatismus über die Validierung siegen.

Peter Mortensen
Wie wäre es mit der Einstellung mit JavaScript?
var e = document.getElementById('cardNumber');
e.autocomplete="off"; // Maybe should be false
Es ist nicht perfekt, aber Ihr HTML wird gültig sein.

Raubvogel
Ich schlage vor, alle 4 Arten von Eingaben abzufangen:
$('form,input,select,textarea').attr("autocomplete", "off");
Referenz:
9161700cookie-checkGibt es eine vom W3C gültige Möglichkeit, die automatische Vervollständigung in einem HTML-Formular zu deaktivieren?yes
Sind Sie sicher, dass Sie mit der Autocomplete-Einstellung des Benutzers herumspielen wollen? Wenn sie es eingeschaltet haben, mögen sie es wahrscheinlich. Die automatische Vervollständigung ist eine vollständig browserseitige Funktion, ähnlich wie die Schaltfläche, mit der der Benutzer die Schriftgröße usw. ändern kann. Sie sollten sich nicht in ihre Wünsche einmischen
– rméador
24. Februar 2009 um 16:25 Uhr
Sogar für etwas so Sensibles wie eine Kreditkartennummer? Ich kann mir nicht viele Leute vorstellen, die daran erinnert werden möchten – zumal die automatische Vervollständigung in den meisten Browsern standardmäßig aktiviert ist. Wenn sie wollen, dass es so schlecht in Erinnerung bleibt, können sie etwas verwenden, das Formulare wie die Google-Symbolleiste ausfüllt.
– matt b
24. Februar 2009 um 19:16 Uhr
Mein Anwendungsfall ist etwas anders – ich führe meine eigene Autovervollständigung durch und möchte nicht, dass sie mit der des Browsers kollidiert. Ich habe gerade erst entdeckt, dass autocomplete=”off” ungültig ist, aber es scheint, dass es keine andere einfache Lösung gibt (es mit js zu injizieren ist einfach albern)
– der Peer
11. Februar 2010 um 17:27 Uhr
@rmeador, weil wir manchmal eine benutzerfreundlichere Alternative zur standardmäßigen automatischen Vorschlagsbox bereitstellen möchten. @corydoras bitte schieben Sie Ihr OSX-Gewicht nicht herum, es ist nicht hilfreich für die Lösung dieser Frage.
– Josch M.
7. März 2011 um 21:54 Uhr
Das Problem ist, dass die Banken den Händler haftbar machen, wenn eine betrügerische Transaktion stattgefunden hat … selbst wenn der Kunde zu 100 % schuld ist. Daher ist es unter Umständen legitim, das Feature für den Kunden zu deaktivieren.
– Anon21
23. Oktober 2011 um 18:52 Uhr