Ich habe ein Designproblem mit Google Chrome und der Funktion zum automatischen Ausfüllen von Formularen .. Wenn Chrome sich ein paar Anmeldedaten/Kennwörter speichert, ändert sich die Hintergrundfarbe in eine gelbe.
Hier sind einige Screenshots:
Wie entferne ich diesen Hintergrund oder deaktiviere einfach dieses automatische Ausfüllen?
Ändern Sie "Weiß" in jede gewünschte Farbe.
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
}
Wenn Sie transparente Eingabefelder wünschen, können Sie Übergangs- und Übergangsverzögerung verwenden.
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-transition-delay: 9999s;
-webkit-transition: color 9999s ease-out, background-color 9999s ease-out;
}
Lösung hier :
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
$(window).load(function(){
$('input:-webkit-autofill').each(function(){
var text = $(this).val();
var name = $(this).attr('name');
$(this).after(this.outerHTML).remove();
$('input[name=' + name + ']').val(text);
});
});
}
In Firefox können Sie die automatische Vervollständigung eines Formulars deaktivieren, indem Sie das Attribut autocomplete = "off/on" verwenden. Ebenso kann die automatische Vervollständigung einzelner Objekte mit demselben Attribut festgelegt werden.
<form autocomplete="off" method=".." action="..">
<input type="text" name="textboxname" autocomplete="off">
Sie können dies in Chrome testen, da es funktionieren sollte.
Wenn Sie das automatische Ausfüllen sowie alle mit den Eingabeelementen verknüpften Daten, zugehörigen Handler und Funktionen beibehalten möchten, versuchen Sie dieses Skript:
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
var _interval = window.setInterval(function ()
{
var autofills = $('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function()
{
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}
}, 20);
}
Es fragt nach Autofill-Elementen, kopiert sie, einschließlich Daten und Ereignisse, fügt sie an derselben Stelle in das DOM ein und entfernt das Original. Der Abruf wird angehalten, sobald ein Klon gefunden wird, da das automatische Ausfüllen nach dem Laden der Seite manchmal eine Sekunde dauert. Dies ist eine Variation eines vorherigen Codebeispiels, jedoch robuster und behält so viele Funktionen wie möglich bei.
(Bestätigt, in Chrome, Firefox und IE 8 zu arbeiten.)
Das folgende CSS entfernt die gelbe Hintergrundfarbe und ersetzt sie durch eine Hintergrundfarbe Ihrer Wahl. Das automatische Ausfüllen wird nicht deaktiviert, und es sind keine jQuery- oder Javascript-Hacks erforderlich.
input:-webkit-autofill {
-webkit-box-shadow:0 0 0 50px white inset; /* Change the color to your own background color */
-webkit-text-fill-color: #333;
}
input:-webkit-autofill:focus {
-webkit-box-shadow: /*your box-shadow*/,0 0 0 50px white inset;
-webkit-text-fill-color: #333;
}
Lösung kopiert aus: Überschreiben Sie das Ausfüllen von Formularen und das Hervorheben von Eingaben mit HTML/CSS.
Für mich gearbeitet, nur die CSS-Änderung erforderlich.
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px #ffffff inset!important;
}
sie können anstelle von #ffffff eine beliebige Farbe einsetzen.
Ein bisschen hackig, aber perfekt für mich
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
Dies behebt das Problem sowohl bei Safari als auch bei Chrome
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
}
Eine Kombination von Antworten funktionierte für mich
<style>
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-box-shadow: 0 0 0px 1000px #373e4a inset !important;
-webkit-text-fill-color: white !important;
}
</style>
Ich benutze das,
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
/* You can use color:#color to change the color */
Hier ist die MooTools-Version von Jason. Behebt es auch in Safari.
window.addEvent('domready',function() {
$('username').focus();
if ((navigator.userAgent.toLowerCase().indexOf(\"chrome\") >= 0)||(navigator.userAgent.toLowerCase().indexOf(\"safari\") >= 0))
{
var _interval = window.setInterval(function ()
{
var autofills = $$('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function(el)
{
var clone = el.clone(true,true).inject(el,'after');;
el.dispose();
});
}
}, 20);
}
});
Dies half mir, eine reine CSS-Version.
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px white inset;
}
wo weiß kann eine beliebige Farbe sein.
Fügen Sie einfach diese kleine Codezeile in Ihr Tag ein.
autocomplete="off"
Fügen Sie dies jedoch nicht in das Feld Benutzername/E-Mail/ID-Name ein. Wenn Sie weiterhin Autocomplete verwenden möchten, wird dies für dieses Feld deaktiviert. Ich habe jedoch einen Ausweg gefunden, indem Sie einfach den Code in Ihr Kennworteingabe-Tag einfügen, da Sie sowieso niemals automatisch ein Kennwort ausfüllen. Mit diesem Fix sollten Sie die Farbstärke und die automatische Vervollständigung des Matinain in Ihrem E-Mail-/Benutzernamenfeld entfernen und sperrige Hacks wie Jquery oder Javascript vermeiden.
Wenn Sie es vollständig loswerden möchten, habe ich den Code in den vorherigen Antworten so angepasst, dass er für Schwebeflug, Aktiv und Fokus funktioniert:
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:active, input:-webkit-autofill:focus {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
Der einzige Weg, der für mich funktioniert, war: (jQuery erforderlich)
$(document).ready(function(e) {
if ($.browser.webkit) {
$('#input_id').val(' ').val('');
}
});
Versuchen Sie diesen Code:
$(function(){
setTimeout(function(){
$('[name=user_password]').attr('type', 'password');
}, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input name="user_password" type="password">
Hier ist eine Mootools-Lösung, die dasselbe tut wie die von Alessandro - ersetzt jeden betroffenen Eingang durch einen neuen.
if (Browser.chrome) {
$$('input:-webkit-autofill').each(function(item) {
var text = item.value;
var name = item.get('name');
var newEl = new Element('input');
newEl.set('name', name);
newEl.value = text;
newEl.replaces(item);
});
}
Ich habe dieses Problem für ein Passwortfeld behoben, das ich so habe:
Setzen Sie den Eingabetyp auf Text anstelle von Kennwort
Entfernen Sie den Eingabetextwert mit jQuery
Konvertieren Sie den Eingabetyp mit jQuery in Kennwort
<input type="text" class="remove-autofill">
$('.js-remove-autofill').val('');
$('.js-remove-autofill').attr('type', 'password');
Ein Update für die Lösung von Arjans. Wenn Sie versuchen, die Werte zu ändern, würden Sie dies nicht zulassen. Das funktioniert gut für mich. Wenn Sie sich auf einen Eingang konzentrieren, wird er gelb. es ist nah genug.
$(document).ready(function (){
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
var id = window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
}
});
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
fareed namrouti Die Antwort ist korrekt. Der Hintergrund wird jedoch immer noch gelb, wenn die Eingabe ausgewählt wird . Hinzufügen von !important
behebt das Problem. Wenn Sie auch textarea
und select
mit demselben Verhalten möchten, fügen Sie einfach textarea:-webkit-autofill, select:-webkit-autofill
hinzu.
Nur Eingabe
input:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
Eingabe, Auswahl, Textbereich
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
Wenn Sie das gelbe Flimmern vermeiden möchten, bis Ihre CSS angewendet wird, schlagen Sie dem bösen Jungen einen Übergang wie folgt:
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
transition: background-color 10s ease-in-out 0s;
}
Was ist mit dieser Lösung:
if ($.browser.webkit) {
$(function() {
var inputs = $('input:not(.auto-complete-on)');
inputs.attr('autocomplete', 'off');
setTimeout(function() {
inputs.attr('autocomplete', 'on');
}, 100);
});
}
Es schaltet die automatische Vervollständigung und die automatische Füllung aus (dh gelbe Hintergründe verschwinden), wartet 100 Millisekunden und schaltet dann die automatische Vervollständigung ohne automatische Füllung zurück.
Wenn Sie Eingaben haben, die automatisch ausgefüllt werden müssen, geben Sie ihnen die Klasse auto-complete-on
css an.
Keine der Lösungen funktionierte für mich, die Eingaben für Benutzername und Kennwort wurden immer noch ausgefüllt und mit dem gelben Hintergrund versehen.
Also fragte ich mich: "Wie bestimmt Chrome, was auf einer bestimmten Seite automatisch ausgefüllt werden soll?"
"Sucht es nach Eingabe-IDs, Eingabe-Namen? Formular-IDs? Formularaktion?"
Bei meinen Experimenten mit den Eingaben für den Benutzernamen und das Kennwort gab es nur zwei Möglichkeiten, durch die Chrome die Felder nicht finden konnte, die automatisch gefüllt werden sollten:
1) Setzen Sie die Passworteingabe vor die Texteingabe. 2) Geben Sie ihnen denselben Namen und dieselbe ID ... oder keinen Namen und keine ID.
Nach dem Laden der Seite können Sie mit Javascript entweder die Reihenfolge der Eingaben auf der Seite ändern oder dynamisch ihren Namen und ihre ID angeben ...
Und Chrome weiß nicht, was es trifft ... Autocomplete bleibt aus.
Verrückter Hack, ich weiß. Aber es funktioniert für mich.
Chrome 34.0.1847.116, OSX 10.7.5
Das Hinzufügen von autocomplete="off"
wird es nicht schneiden.
Ändern Sie das Eingabetypattribut in type="search"
.
Google wendet das automatische Ausfüllen nicht auf Eingaben mit einer Suchart an.
Ich hoffe, das erspart Ihnen etwas Zeit.