Ich habe 2 Grundformulare - Anmelden und Anmelden, beide auf derselben Seite. Jetzt habe ich kein Problem mit dem automatischen Ausfüllen des Anmeldeformulars.Aber das Anmeldeformular wird auch automatisch ausgefüllt, und ich mag es nicht.
Außerdem erhalten die Formularstile einen gelben Hintergrund, den ich nicht überschreiben kann, und ich möchte dazu kein Inline-CSS verwenden. Was kann ich tun, damit sie nicht mehr gelb gefärbt werden?und (möglicherweise) automatische Befüllung? Danke im Voraus!
Antworten:
Für die automatische Vervollständigung können Sie Folgendes verwenden:
zum Farbproblem:
Auf Ihrem Screenshot kann ich sehen, dass das Webkit den folgenden Stil generiert:
1) Da # id-Stile noch wichtiger sind als .class-Stile, kann Folgendes funktionieren:
2) Wenn dies nicht funktioniert, können Sie versuchen, den Stil programmgesteuert über Javascript festzulegen
3) Wenn das nicht funktioniert, sind
Sie zum Scheitern verurteilt :-)BedenkenSie Folgendes: Dadurch wird die gelbe Farbe nicht ausgeblendet, aber der Text wird wieder lesbar.4) eine CSS / Javascript-Lösung:
CSS:
und das folgende Javascript muss unter Last ausgeführt werden:
z.B:
Viel Glück :-)
5) Wenn keine der oben genannten Aufgaben ausgeführt wird, versuchen Sie, die Eingabeelemente zu entfernen, sie zu klonen und die geklonten Elemente wieder auf der Seite zu platzieren (funktioniert in Safari 6.0.3):
6) Von hier aus :
quelle
code
var keepTheInputCloned = setInterval(function(){ var e = document.getElementById('id_email'); var ep = e.parentNode; ep.removeChild(e); var e2 = e.cloneNode(); ep.appendChild(e2); var p = document.getElementById('id_password'); var pp = p.parentNode; pp.removeChild(p); var p2 = p.cloneNode(); pp.appendChild(p2); },50); setTimeout(function(){clearInterval(keepTheInputCloned)},1000);
Trick es mit einem "starken" Innenschatten:
quelle
Fügen Sie diese CSS-Regel hinzu, und die gelbe Hintergrundfarbe verschwindet. :) :)
quelle
So ziemlich alle modernen Browser werden das respektieren.
quelle
autocomplete
ist, dass es in HTML vor Version 5 ungültig ist.Nach 2 Stunden Suche scheint Google Chrome die gelbe Farbe immer noch irgendwie zu überschreiben, aber ich habe das Update gefunden. Es funktioniert auch für Schweben, Fokussieren usw. Alles was Sie tun müssen, ist es hinzuzufügen
!important
.Dadurch wird die gelbe Farbe vollständig aus den Eingabefeldern entfernt
quelle
Sie können auch das Namensattribut Ihrer Formularelemente so ändern, dass es generiert wird, damit der Browser es nicht verfolgt. Firefox 2.x + und Google Chrome scheinen jedoch keine großen Probleme damit zu haben, wenn die Anforderungs-URL identisch ist. Versuchen Sie grundsätzlich, einen Salt-Anforderungsparameter und einen Salt-Feldnamen für das Anmeldeformular hinzuzufügen.
Allerdings denke ich, dass autocomplete = "off" immer noch die beste Lösung ist :)
quelle
Sie können die automatische Vervollständigung ab HTML5 (über
autocomplete="off"
) deaktivieren , die Hervorhebung des Browsers jedoch NICHT überschreiben. Sie könnten versuchen,::selection
in CSS herumzuspielen (die meisten Browser benötigen ein Herstellerpräfix, damit dies funktioniert), aber das wird Ihnen wahrscheinlich auch nicht helfen.Sofern der Browser-Anbieter nicht speziell eine herstellerspezifische Methode zum Überschreiben implementiert hat, können Sie nichts gegen solche Stile unternehmen, die bereits dazu gedacht sind, das Stylesheet der Site für den Benutzer zu überschreiben. Diese werden normalerweise angewendet, nachdem Ihre Stylesheets angewendet wurden, und ignorieren auch
! important
Überschreibungen.quelle
Manchmal wird die automatische Vervollständigung im Browser immer noch automatisch vervollständigt, wenn Sie nur den Code im
<form>
Element haben.Ich habe versucht, es auch in das
<input>
Element zu setzen, und es hat besser funktioniert.Die Unterstützung für dieses Attribut wird jedoch eingestellt. Bitte lesen Sie https://bugzilla.mozilla.org/show_bug.cgi?id=956906#c1
https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Eine andere Lösung, die ich gefunden habe, ist das Entfernen von Platzhaltern in den Eingabefeldern, die darauf hinweisen, dass es sich um eine E-Mail, einen Benutzernamen oder ein Telefonfeld handelt (z. B. "Ihre E-Mail", "E-Mail" usw. ").
Dies führt dazu, dass Browser nicht wissen, um welche Art von Feld es sich handelt, und daher nicht versuchen, es automatisch zu vervollständigen.
quelle
Wenn es sich im Eingabefeld befindet, versuchen Sie, "gelb zu entfernen" ...
So könnte es aussehen:
quelle
Dies behebt das Problem sowohl in Safari als auch in Chrome
quelle
Der von Ihnen verlinkte Screenshot zeigt, dass WebKit den Selektor
input:-webkit-autofill
für diese Elemente verwendet. Haben Sie versucht, dies in Ihr CSS aufzunehmen?Wenn das nicht funktioniert, wird wahrscheinlich nichts. Diese Felder werden hervorgehoben, um den Benutzer darauf aufmerksam zu machen, dass sie automatisch mit privaten Informationen (z. B. der Privatadresse des Benutzers) gefüllt wurden. Es könnte argumentiert werden, dass das Ausblenden einer Seite ein Sicherheitsrisiko darstellt.
quelle
Das
form
Element verfügt über einautocomplete
Attribut, auf das Sie festlegen könnenoff
. Ab dem CSS verhindert die!important
Direktive nach einer Eigenschaft, dass sie überschrieben wird:Nur IE6 versteht es nicht.
Wenn ich Sie missverstanden habe, gibt es auch die
outline
Eigenschaft, die Sie nützlich finden könnten.quelle
!important
Direktive. In diesem Fall hat sie Vorrang vor allen anderen. Sie sollten das Stylesheet Ihres Benutzeragenten überprüfen (obwohl ich nicht weiß, wo es zu finden ist).Ich habe gesehen, dass die Autovervollständigungsfunktion der Google-Symbolleiste mit Javascript deaktiviert wurde. Es könnte mit einigen anderen Tools zum automatischen Ausfüllen funktionieren. Ich weiß nicht, ob es bei Browsern hilft, die in Autocomplete eingebaut sind.
quelle
Nachdem ich viele Dinge ausprobiert hatte, fand ich funktionierende Lösungen, die die automatisch ausgefüllten Felder zerstörten und durch doppelte ersetzten. Um angehängte Ereignisse nicht zu verlieren, habe ich mir eine andere (etwas langwierige) Lösung ausgedacht.
Bei jedem "Eingabe" -Ereignis werden schnell "Änderungs" -Ereignisse an alle beteiligten Eingaben angehängt. Es wird geprüft, ob sie automatisch ausgefüllt wurden. Wenn ja, senden Sie ein neues Textereignis aus, das den Browser dazu verleitet, zu glauben, dass der Wert vom Benutzer geändert wurde, sodass der gelbe Hintergrund entfernt werden kann.
quelle
Einfache Javascript-Lösung für alle Browser:
Klonen Sie die Eingabe, setzen Sie das Attribut zurück und verbergen Sie die ursprüngliche Eingabe. Für das iPad ist eine Zeitüberschreitung erforderlich
quelle
Da der Browser nach Kennwortfeldern sucht, besteht eine andere Problemumgehung darin, am Anfang Ihres Formulars ein ausgeblendetes Feld einzufügen:
quelle
Ich habe so viele Threads gelesen und so viele Codeteile ausprobiert. Nachdem ich all diese Dinge gesammelt hatte, war die einzige Möglichkeit, die Anmelde- und Kennwortfelder sauber zu leeren und ihren Hintergrund auf Weiß zurückzusetzen, die folgende:
Fühlen Sie sich frei zu kommentieren, ich bin offen für alle Verbesserungen, wenn Sie einige finden.
quelle
Die automatische Vervollständigung wird von modernen Browsern nicht unterstützt. Der einfachste Weg, die Autovervollständigung zu lösen, war ein kleiner Track mit HTML und JS. Als erstes müssen Sie den Typ der Eingabe in HTML von 'Passwort' in 'Text' ändern.
Die automatische Vervollständigung beginnt nach dem Laden des Fensters. Das ist okay. Wenn der Typ Ihres Feldes jedoch nicht "Passwort" ist, wusste der Browser nicht, welche Felder er ausfüllen muss. Es wird also keine automatische Vervollständigung für Formularfelder geben.
Binden Sie danach den Ereignisfokus in das Kennwortfeld, z. im Rückgrat:
In
onInputPasswordFocusIn
, ändern Sie einfach den Typ des Feldes mit einem Passwort, durch einfache Prüfung:Das ist es!
UPD: Dieses Ding funktioniert nicht mit deaktiviertem JavaSciprt
UPD im Jahr 2018. Auch einige lustige Trick gefunden. Setzen Sie das schreibgeschützte Attribut auf das Eingabefeld und entfernen Sie es im Fokusereignis. Erstens verhindern Sie, dass der Browser Felder automatisch ausfüllt, zweitens können Daten eingegeben werden.
quelle
autocomplete=off
, da sie für eine Weile in FF, Chrome und IE ab der vorherigen Version oder soBitte versuchen Sie es mit autocomplete = "none" in Ihrem Eingabe-Tag
Das funktioniert bei mir
quelle
Ich musste auch die Textfarbe auf etwas Dunkleres ändern (siehe StackOverflow dunkle Themenfarben).
So entstand eine Mischung aus @ Tamás Pap, @MCBL und @ don's Lösung:
quelle
Warum nicht einfach das in dein CSS einfügen:
Das sollte sich um Ihr Problem kümmern. Dies wirft zwar ein Usability-Problem auf, da der Benutzer jetzt nicht sehen kann, dass das Formular so ausgefüllt wurde, wie er es gewohnt ist.
[Bearbeiten] Nachdem ich dies gepostet hatte, sah ich, dass bereits eine ähnliche Antwort gegeben wurde und dass Sie kommentiert haben, dass es nicht funktioniert hat. Ich verstehe nicht ganz warum, weil es funktioniert hat, als ich es getestet habe.
quelle
input:-webkit-autofill
und existiertinput --webkit-autocomplete
einfach nichtDas WIRKLICHE Problem hierbei ist, dass das Webkit (Safari, Chrome, ...) einen Fehler aufweist. Wenn mehr als ein [Formular] auf der Seite vorhanden ist, jedes mit einem [Eingabetyp = "Text" name = "foo" ...] (dh mit demselben Wert für das Attribut 'Name'), kehrt der Benutzer zurück Auf der Seite erfolgt das automatische Ausfüllen im Eingabefeld des ERSTEN [Formulars] auf der Seite, nicht im [Formular], das gesendet wurde. Beim zweiten Mal wird das NÄCHSTE [Formular] automatisch ausgefüllt und so weiter. Nur [Formular] mit einem Eingabetextfeld mit dem gleichen Namen ist betroffen.
Dies sollte den Webkit-Entwicklern gemeldet werden.
Opera füllt das rechte [Formular] automatisch aus.
Firefox und IE werden nicht automatisch ausgefüllt.
Also sage ich noch einmal: Dies ist ein Fehler im Webkit.
quelle