Chromeでサイトの入力ボックスが黄色くならないようにするにはどうすればよいですか?


151

フォームの送信、検証後のテキストや視覚的補助の中でも特に、注意が必要なインタラクティブ領域を示すために、入力ボックスを赤に着色しています。

Chrome(およびGoogleツールバーユーザー)では、自動入力機能により入力フォームの色が黄色に変わります。ここに複雑な問題があります:ユーザーのログインを高速化するため、フォームでオートコンプリートを許可したいのですが、エラーが発生した場合、またはトリガーされたときに、オートコンプリート属性をオフにする機能を確認しますが、これは複雑ですページ上の影響を受ける単一の入力のオートコンプリートをプログラムでオフにするコーディングのビット。簡単に言えば、これは大きな頭痛の種でしょう。

それで、その問題を回避しようとするために、入力ボックスの色を変更しないようにするためのより簡単な方法はありますか?

[編集]以下の重要な提案を試しましたが、効果がありませんでした。!important属性が機能するかどうかを確認するために、Googleツールバーをまだチェックしていません。

私の知る限り、autocomplete属性を使用する以外に手段はありません(機能しているように見えます)。


1
これはChromeだけの問題ではありません。他のブラウザ用のGoogleツールバーは、入力フィールドの同じ「黄変」を行います。
カールトンジェンケ2008年

2
以下で機能する答えを用意しました。
John Leidegren 2009年

8
誰もがアウトラインについて話している理由がわかりません。どれも、質問はアウトラインではなく黄色の背景についてです。また、オートコンプリート属性をオフに設定しても、問題は修正されません。davebugが、オートコンプリートを機能させたいと言ったのは、黄色の背景だけではないためです。

回答:


74

Firefoxでは、autocomplete = "off"属性を使用してオートコンプリート機能を無効にできることを知っています。これがChromeで機能する場合(テストされていません)、エラーが発生したときにこの属性を設定できます。

これは、単一の要素の両方に使用できます

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

...およびフォーム全体

<form autocomplete="off" ...>

「エラーがトリガーされた場合に、オートコンプリート属性をオフにする機能を確認しますが、ページ上の単一の影響を受ける入力のオートコンプリートをプログラムでオフにするのは複雑なコーディングです。」
Dave Rutledge、

ええと...はい、ありがとうございます。Chromeをチェックインする必要があると思いますよね?
Dave Rutledge、

2
レールのシンプルなフォームを使用している<%= simple_form_for @user, html: { autocomplete: 'off' } do |f| %>
ユーザー向け

これは私には役に立たなかったと言ってすみません
M.Islam

136

CSSアウトラインプロパティをnoneに設定します。

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

ブラウザが背景色も追加する場合は、次のような方法で修正できます

:focus { background-color: #fff; }

9
バックグラウンド?Chromeにも背景色が追加されていることを知りませんでしたか?もしそうなら、それは次のようなもので修正できます:focus { background-color: #fff; }
John Leidegren

CSSでアウトラインを削除すると、黄ばみを防ぐことができますが、実際の自動入力は妨げられません。これを行う場合は、非標準かどうかにかかわらず、autocomplete属性を使用することが重要です。
Tom Boutell、2010

2
@pestaa正解、これは正しい答えではありませんが、確かに同様の問題を解決します
David Lawson

タブレットなどを扱うときは注意してください。デフォルトのAndroidブラウザーは、アウトラインなしでは少し難しいです。モバイル以外のブラウザにも適用できるほど簡単です:)
Tim Post

小さな改善: input[type=text], input[type=password], input[type=email], textarea, select { outline: none; }
フェリペリマ2012

56

これはまさにあなたが探しているものです!

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

これは素晴らしいハックです。ありがとう
Jason

私もそれに焦点を合わせます:Dinput:-webkit-autofill, input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #FFF inset; }
StephanieQ

こんにちは@JStormThaKid、私はこれを使用しました...しかし、正しい入力に対して機能しませんでした...これに答えてください...
mithu

彼が実際に尋ねた質問に答えてくれてありがとう!私はほとんど希望を失い始めました。
BVernon

ここでのベストアンサー、私はまだgoogleオートコンプリートが欲しかったので、ありがとう
Spangle

14

jQueryを少し使用することで、オートコンプリート機能を損なわずにChromeのスタイルを削除できます。私はそれについてここに短い投稿を書きました: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);
    });
});}

ヒントをありがとう!しかし、フォームを投稿した後、戻るボタンをクリックすると、黄色のハイライトが表示されました。これをカバーするためにスニペット(私の回答を参照)を拡張しました。
321X 2013

+1 @Benjaminの優れたソリューション。黄色に少し点滅しますが、最後に修正されます;)
itsme 2013

7

すべてのフィールドの境界線を削除するには、以下を使用できます。

*:focus { outline:none; }

選択フィールドの境界線を削除するには、このクラスを必要な入力フィールドに適用するだけです。

.nohighlight:focus { outline:none; }

もちろん、必要に応じて境界線を変更することもできます。

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

(Bill Beckelmanから:CSSを使用してアクティブフィールドの周りのChromeの自動境界を上書きします


2

はい、それは大きな頭痛の種になるでしょう。私の意見ではそれは価値がありません。おそらく、UI戦略を少し調整して、ボックスを赤で着色する代わりに、境界線を赤で着色するか、ボックスの中にあるときに消える小さな赤いテープ(Gmailの「Loading」テープなど)を置くことができます。フォーカス。


1

これはjQueryの簡単な部分です。

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

または、もう少し厳選したい場合は、セレクターのクラス名を追加します。



1

@Benjaminの彼のソリューションを適用した後、戻るボタンを押しても黄色のハイライトが表示されることがわかりました。

私の解決策何とか戻ってきて、この黄色のハイライトを防止するには、以下のjQuery JavaScriptを適用することにより、次のとおりです。

<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>

それが誰にも役立つことを願っています!!


1

これは機能します。何よりも、rgba値を使用できます(ボックスシャドウインセットハックはrgbaでは機能しません)。これは、@ Benjaminの回答を少し調整したものです。$(window).load()の代わりに$(document).ready()を使用しています。私にとってはうまくいくようです-今ではFOUCはずっと少なくなっています。$(document).ready()を使用することに不利な点はないと思います。

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

今日のバージョンでは、これは2つのログイン入力の1つに配置されている場合にも機能します。また、バージョン40以降およびFirefoxの最新の問題を修正します。

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

0
input:focus { outline:none; }

それは私にとってはうまくいきましたが、あなたのサイトで物事を均一に保つ可能性が高いので、これをtextareasのCSSにも含めたいと思います:

textarea:focus { outline:none; }

また、ほとんどの人にとってそれは明白に思えるかもしれませんが、初心者のために、次のような色に設定することもできます。

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

-1

私の記憶が正しければ、入力の背景色に関するスタイルシートの!importantルールは、Googleツールバーのオートコンプリートをオーバーライドします。おそらくChromeでも同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.