431 Stimmen

Gibt es eine W3C gültige Möglichkeit, die automatische Vervollständigung in einem HTML-Formular zu deaktivieren?

Bei Verwendung des xhtml1-transitional.dtd doctype, der eine Kreditkartennummer mit folgendem HTML-Code erfasst

<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>

führt zu einer Warnung des W3C-Validators:

Es gibt kein Attribut "Autovervollständigen".

Gibt es eine W3C / Standards Weg zum Browser Auto-Vervollständigung auf sensible Felder in einem Formular zu deaktivieren?

6voto

opznhaarlems Punkte 61

Die Verwendung eines zufälligen Attributs "Name" funktioniert bei mir.

Ich habe das Attribut name beim Absenden des Formulars zurückgesetzt, damit Sie beim Absenden des Formulars immer noch über den Namen darauf zugreifen können. (mit dem Attribut id, um den Namen zu speichern)

5voto

kravietz Punkte 9651

Beachten Sie, dass es einige Verwirrung darüber gibt, wo das Attribut "Autovervollständigen" zu finden ist. Es kann entweder auf das gesamte FORM-Tag oder auf einzelne INPUT-Tags angewendet werden, und dies war vor HTML5 nicht wirklich standardisiert (was explizit erlaubt beide Standorte ). Ältere Dokumente, vor allem dieses Mozilla-Artikel erwähnt nur den FORM-Tag. Gleichzeitig suchen einige Sicherheitsscanner nur nach Autovervollständigung im INPUT-Tag und beschweren sich, wenn es fehlt (auch wenn es es in der übergeordneten FORM). Eine ausführlichere Analyse dieses Durcheinanders finden Sie hier: Verwirrung über AUTOCOMPLETE=OFF-Attribute in HTML-Formularen .

3voto

Kieron Punkte 25804

Nicht ideal, aber Sie könnten die ID und den Namen des Textfeldes jedes Mal ändern, wenn Sie es rendern - Sie müssten es auch serverseitig verfolgen, damit Sie die Daten herausholen können.

Ich bin mir nicht sicher, ob das funktioniert oder nicht, das war nur ein Gedanke.

2voto

Snakes and Coffee Punkte 8505

Ich glaube, es gibt einen einfacheren Weg. Erstellen Sie eine versteckte Eingabe mit einem zufälligen Namen (über Javascript) und setzen Sie den Benutzernamen auf diesen. Wiederholen Sie den Vorgang mit dem Passwort. Auf diese Weise Ihr Backend-Skript weiß genau, was der entsprechende Feldname ist, während die Autovervollständigung im Dunkeln bleibt.

Wahrscheinlich liege ich falsch, aber das ist nur eine Idee.

2voto

Jack Punkte 1840
if (document.getElementsByTagName) {
    var inputElements = document.getElementsByTagName("input");
    for (i=0; inputElements[i]; i++) {
        if (inputElements[i].className && (inputElements[i].className.indexOf("disableAutoComplete") != -1)) {
            inputElements[i].setAttribute("autocomplete","off");
        }
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X