Chrome'un sitemin giriş kutularını sararmasını nasıl önleyebilirim?


151

Form gönderme, doğrulama sonrası diğer metin ve görsel yardımların yanı sıra, dikkat edilmesi gereken etkileşimli alanı belirtmek için giriş kutularımı kırmızıya boyayorum.

Chrome'da (ve Google Araç Çubuğu kullanıcıları için) otomatik doldurma özelliği, giriş formlarımı yeniden renklendirir. İşte karmaşık sorun: Kullanıcıların oturum açmasını hızlandırdığı için formlarımda otomatik tamamlamaya izin istiyorum. Bir hata tetiklendiğinde / olduğunda otomatik tamamlama özelliğini kapatma yeteneğini kontrol edeceğim, ancak karmaşık bir sayfada etkilenen tek giriş için otomatik tamamlamayı programlı olarak kapatmak üzere kodlama biti. Bu, basitçe söylemek gerekirse, büyük bir baş ağrısı olacaktır.

Bu sorunu önlemek için Chrome'un giriş kutularını yeniden renklendirmesini önlemenin daha basit bir yöntemi var mı?

Aşağıdaki önemli öneriyi denedim ve hiçbir etkisi olmadı. Önemli özelliğin bunun için işe yarayıp yaramayacağını görmek için henüz Google Araç Çubuğu'nu kontrol etmedim.

Anlayabildiğim kadarıyla, otomatik tamamlama özelliğini kullanmaktan başka bir yol yoktur (ki bu işe yarıyor gibi görünüyor).


1
bu yalnızca Chrome'daki bir sorun değildir. Diğer tarayıcılar için Google Araç Çubuğu, giriş alanlarıyla aynı "sararmayı" yapar.
Carlton Jenke

2
Aşağıda size uygun bir cevap verdim.
John Leidegren

8
Herkesin neden anahattan bahsettiğini anlamıyorum: hiçbiri, soru anahat değil, arka planla ilgili. Ve kapalı olarak ayarlanan otomatik tamamlama özelliği sorunu DESTEKLEMEZ, çünkü davebug otomatik tamamlamanın sarı arka planı değil, çalışmasını istediğini söyledi.

Yanıtlar:


74

Firefox'ta otomatik tamamlama işlevini devre dışı bırakmak için autocomplete = "off" özelliğini kullanabileceğinizi biliyorum. Bu Chrome'da çalışıyorsa (test edilmemişse), bir hatayla karşılaştığınızda bu özelliği ayarlayabilirsiniz.

Bu, hem tek bir öğe için kullanılabilir

<input type="text" name="name" autocomplete="off">

... ve tüm form için

<form autocomplete="off" ...>

"Bir hata tetiklendiğinde / olduğunda otomatik tamamlama özelliğini kapatma yeteneğini kontrol edeceğim, ancak bir sayfada tek etkilenen giriş için otomatik tamamlamayı programlı olarak kapatmak karmaşık bir kodlama parçasıdır."
Dave Rutledge

Heh ... evet, teşekkürler, sanırım Chrome'u kontrol etmem gerekiyor, değil mi?
Dave Rutledge

2
basit bir form kullanan insanlar için<%= simple_form_for @user, html: { autocomplete: 'off' } do |f| %>
carbonr

bunun bana yardım etmediğini söylediğim için üzgünüm
M.Islam

136

CSS anahat özelliğini yok olarak ayarlayın.

input[type="text"], input[type="password"], textarea, select { 
    outline: none;
}

Tarayıcının bir arka plan rengi de ekleyebileceği durumlarda, bu gibi bir şeyle düzeltilebilir

:focus { background-color: #fff; }

9
Arka fon? Chrome'un da bir arka plan rengi eklediğinin farkında değildim? Eğer öyleyse, bu gibi bir şey tarafından düzeltilebilir:focus { background-color: #fff; }
John Leidegren

Anahatların CSS ile öldürülmesi sararmayı engelleyebilir, ancak gerçek otomatik doldurmayı engellemez. Bunu yapmak istiyorsanız, standart olmayan veya olmayan otomatik tamamlama özelliğini kullanmak önemlidir.
Tom Boutell

2
@pestaa doğru, bu doğru cevap değil, ama kesinlikle benzer bir sorunu çözüyor
David Lawson

Tabletler ve diğer şeylerle uğraşırken dikkatli olun, varsayılan Android tarayıcısının anahat olmadan kullanımı biraz zordur . Mobil olmayan tarayıcılara uygulamak için yeterince kolay olsa da :)
Tim Post

Küçük bir gelişme: input[type=text], input[type=password], input[type=email], textarea, select { outline: none; }
Felipe Lima

56

tam olarak aradığın şey bu!

// Just change "red" to any color
input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px red inset;
}

bu harika bir hack. Teşekkürler
Jason

Ben de buna odaklanacağım: Dinput:-webkit-autofill, input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #FFF inset; }
StephanieQ

selam @JStormThaKid, bunu kullandım ..., ama doğru girişler için çalışmadı ... lütfen buna cevap
ver

Aslında sorduğu soruyu cevapladığınız için teşekkürler! Neredeyse umudumu kaybetmeye başlamıştım.
BVernon

Burada en iyi cevap, hala google otomatik tamamlama istedim, bu yüzden teşekkürler
Spangle

14

Biraz jQuery kullanarak, otomatik tamamlama işlevini korurken Chrome'un stilini kaldırabilirsiniz. Burada kısa bir yazı yazdım: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/

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);
    });
});}

İpucu için teşekkürler! Ancak formu gönderdikten ve geri düğmesine tıkladıktan sonra sarı vurgu geri döndü. Snippet'inizi bu cevabı kapsayacak şekilde genişlettim (cevabıma bakın).
321X

+1 @Benjamin güzel bir çözüm, biraz sarı yanıp sönüyor ama sonunda düzeltiyor;)
itsme

7

Tüm alanların kenarlığını kaldırmak için aşağıdakileri kullanabilirsiniz:

*:focus { outline:none; }

Seçili alanların kenarlığını kaldırmak için bu sınıfı istediğiniz giriş alanlarına uygulamanız yeterlidir:

.nohighlight:focus { outline:none; }

Elbette sınırı istediğiniz gibi değiştirebilirsiniz:

.changeborder:focus { outline:Blue Solid 4px; }

(Bill Beckelman'dan: Chrome'un CSS Kullanarak Etkin Alanların Çevresindeki Otomatik Kenarlığını Geçersiz Kıl )


2

Evet, bence dönüşe değmeyen büyük bir baş ağrısı olurdu. Belki UI stratejinizi biraz değiştirebilir ve kutuyu kırmızı renklendirmek yerine, sınırları kırmızı renklendirebilir veya kutuya girdiğinde kaybolan küçük bir kırmızı bant ("Yükleme" bandı gibi) odaklanır.


1

JQuery ile bir parça kek:

if ($.browser.webkit) {
    $("input").attr('autocomplete','off');
}

Ya da biraz daha seçici olmak istiyorsanız, bir seçici için bir sınıf adı ekleyin.



1

@Benjamin çözümünü uyguladıktan sonra geri düğmesine basmanın bana hala sarı vurgu yapacağını öğrendim.

Benim çözüm bir şekilde bu sarı vurgu geri gelmesini önlemek için aşağıdaki jQuery javascript uygulamaktır:

<script type="text/javascript">
    $(function() {
        if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
        var intervalId = 0;
            $(window).load(function() {
                intervalId = setInterval(function () { // << somehow  this does the trick!
                    if ($('input:-webkit-autofill').length > 0) {
                        clearInterval(intervalId);
                        $('input:-webkit-autofill').each(function () {
                            var text = $(this).val();
                            var name = $(this).attr('name');
                            $(this).after(this.outerHTML).remove();
                            $('input[name=' + name + ']').val(text);
                        });
                    }
                }, 1);
            });
        }
    });
</script>

Umarım herkese yardımcı olur !!


1

Bu çalışıyor. En iyisi, rgba değerlerini kullanabilirsiniz (kutu-gölge iç metin kesmek rgba ile çalışmaz). Bu @ Benjamin'in cevabında küçük bir değişiklik. $ (Window) .load () yerine $ (document) .ready () kullanıyorum. Benim için daha iyi çalışıyor gibi görünüyor - şimdi çok daha az FOUC var. $ (Document) .ready () kullanmanın dezavantajları olduğuna inanmıyorum.

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
    $(document).ready(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);
        });
    });
};

1

bugünün sürümleri için, bu, iki giriş girişinden birine yerleştirildiğinde de çalışır. Ayrıca sürüm 40+ ve geç Firefox sorununu düzeltin.

<input readonly="readonly" onfocus="this.removeAttribute('readonly');" />

0
input:focus { outline:none; }

Bu benim için harika çalıştı, ancak sitenizdeki şeyleri tekdüze tutması daha olasıdır, bunu textareas için CSS'nize de dahil etmek isteyeceksiniz:

textarea:focus { outline:none; }

Ayrıca çoğu için açık gibi görünebilir, ancak yeni başlayanlar için bunu bir renge de ayarlayabilirsiniz:

input:focus { outline:#HEXCOD SOLID 2px ; }

-1

Doğru hatırlıyorsam, girişlerin arka plan rengi için stil sayfasındaki!! Önemli bir kural Google araç çubuğu otomatik tamamlamasını geçersiz kılar - muhtemelen aynı Chrome için de geçerlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.