如何阻止Chrome浏览器变黄我的网站的input框?

在表单提交,后validation等其他文本和视觉辅助工具中,我将我的input框设为红色,以表示需要注意的交互区域。

在Chrome(以及Google工具栏用户)上,自动填充function会将我的input表单重新着色为黄色。 这是一个复杂的问题:我希望自动完成允许在我的表单上,因为它加快了用户的login速度。我将检查能否将自动完成属性closures,如果/当有错误触发,但它是一个复杂的编码位以编程方式closures页面上单个受影响input的自动完成。 简而言之,这将是一个令人头疼的问题。

所以为了避免这个问题,有没有更简单的方法来阻止Chrome重新着色input框?

我尝试了!下面的重要build议,它没有效果。 我还没有检查Google工具栏,看看!重要的属性是否可以工作。

据我所知,除了使用autocomplete属性(看起来工作)没有任何其他的方法。

我知道在Firefox中,您可以使用属性autocomplete =“off”来禁用自动完成function。 如果在Chrome中可以使用(尚未testing),则可以在遇到错误时设置此属性。

这可以用于一个单一的元素

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

…以及整个表格

 <form autocomplete="off" ...> 

将CSS大纲属性设置为无。

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

在浏览器可能会添加背景颜色的情况下,这可以通过类似的东西来解决

 :focus { background-color: #fff; } 

这正是你想要的!

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

通过使用一点jQuery你可以删除Chrome的样式,同时保持自动完成function不变。 我在这里写了一篇关于它的短文: 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); }); });} 

要删除所有字段的边框,可以使用以下命令:

*:focus { outline:none; }

要删除select字段的边框,只需将此类应用于所需的input字段:

.nohighlight:focus { outline:none; }

你当然也可以根据你的需要改变边界:

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

(来自Bill Beckelman: 使用CSS覆盖Chrome的活动字段的自动边框 )

是的,这将是一个令人头疼的问题,在我看来这不值得回报。 也许你可以稍微调整一下你的UI策略,而不是将框着色为红色,而是将框着色为红色,或者在框旁边放一小段繁文tape节(比如gmails“Loading”磁带),当框处于焦点。

这是jQuery的一块蛋糕:

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

或者,如果您想要更具select性,请为select器添加一个类名称。

我认为更简单的方法是:

  1. 获取http://www.quirksmode.org/js/detect.html
  2. 使用此代码:

     if (BrowserDetect.browser == "Chrome") { jQuery('form').attr('autocomplete','off'); }; 

他的解决scheme应用@Benjamin后,我发现按下后退button仍然会给我黄色的亮点。

我的解决scheme, 防止这个黄色突出显示回来是通过应用下面的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> 

希望它有助于任何人!

这工作。 最重要的是,你可以使用rgba值(box-shadow inset hack不适用于rgba)。 这是对本杰明答案的微调。 我使用$(document).ready()而不是$(window).load()。 这似乎对我更好 – 现在FOUCless得多。 我不相信使用$(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); }); }); }; 

对于今天的版本,如果放置在两个logininput之一中,这也是有效的。 还修复版本40+和Firefox后期问题。

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

如果我没有记错的话,input框背景色的样式表中的重要规则将会覆盖Google工具栏的自动完成function – 推测大概Chrome浏览器也是这样。

 input:focus { outline:none; } 

这对我很好,但很可能保持统一的东西在你的网站上,你也想把这个包括在textareas的CSS中:

 textarea:focus { outline:none; } 

对大多数人来说,这看起来也是显而易见的,但对初学者来说,你也可以将其设置为一种颜色:

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

最好的解决scheme如此(最less)

 input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset; &:hover, &:focus { box-shadow: 0 0 0 1000px white inset; } } 

随着Mootools

 function fixchromeyellow() { if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) { $$('input["input:-webkit-autofill"]').each(function(el) { el.clone().inject(el,"after"); el.destroy(); }); } } window.setTimeout(fixchromeyellow, 500);