chrome表单自动填充导致input文本框背景变成偏黄色问题解决

摘要:
第二种方法是使用jquery来确定它是否是chrome。如果是,则遍历input:-webkit autofill元素,然后通过取值、追加和删除等操作来实现。此外,js无法获得chrome自动填写的表单的值,因此在互联网上广泛传播的使用jquery的解决方案不起作用。最多只能删除黄色背景,而自动填充的值将被删除。chrome自动填充的表单的值存储在DocumentFragment的div中。如果任何童鞋都知道如何获取chrome自动填写的表单的值,请给我一些建议。

chrome表单自动填充后,input文本框的背景会变成偏黄色的,想必大家都会碰到这种情况吧,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性造成的,解决方法如下,感兴趣的朋友可以了解下

chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式:
代码如下:
input:-webkit-autofill { 
background-color: #FAFFBD; 
background-image: none; 
color: #000; 
} 

在有些情况下,这个黄色的背景会影响到我们界面的效果,尤其是在我们给input文本框使用图片背景的时候,原来的圆角和边框都被覆盖了: 
chrome表单自动填充导致input文本框背景变成偏黄色问题解决第1张 
情景一:input文本框是纯色背景的 

可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的黄色背景;如: 

复制代码
代码如下:

input:-webkit-autofill { 
-webkit-box-shadow: 0 0 0px 1000px white inset; 
border: 1px solid #CCC!important; 
} 

如果你有使用圆角等属性,或者发现输入框的长度高度不太对,可以对其进行调整,除了chrome默认定义的background-color,background-image,color不能用!important提升其优先级以外,其他的属性均可使用!important提升其优先级,如: 

复制代码
代码如下:

input:-webkit-autofill { 
-webkit-box-shadow: 0 0 0px 1000px white inset; 
border: 1px solid #CCC!important; 
height: 27px!important; 
line-height: 27px!important; 
border-radius: 0 4px 4px 0; 
} 

情景二:input文本框是使用图片背景的 

这个比较麻烦,目前还没找到完美的解决方法,有两种选择: 
1、如果你的图片背景不太复杂,只有一些简单的内阴影,那个人觉得完全可以使用上面介绍的方法用足够大的纯色内阴影去覆盖掉黄色背景,此时只不过是没有了原来的内阴影效果罢了。 
2、如果你实在想留住原来的内阴影效果,那就只能牺牲chrome自动填充表单的功能,使用js去实现,例如: 

复制代码
代码如下:

$(function() { 
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) { 
$(window).load(function(){ 
$('ul input:not(input[type=submit])').each(function(){ 
var outHtml = this.outerHTML; 
$(this).append(outHtml); 
}); 
}); 
} 
10.}); 

遍历的对象可能要根据你的需求去调整。如果你不想使用js,好吧,在form标签上直接关闭了表单的自动填充功能:autocomplete=”off”。 

关于网上盛传的方法不奏效的一些测试 

这个问题困扰了我挺长一段时间的,网上写的方法主要有2种:第一种是在样式里对input:-webkit-autofill重写background-color和color,使用!important提高其优先级。第二种是使用jquery,先判断是否是chrome,如果是,则遍历input:-webkit-autofill元素,再通过取值,附加,移除等操作来实现。 

但是我测试发现,这两种方法都不凑效!不知道是随着chrome版本的升级,现在的chrome(27)已经不支持重写input:-webkit-autofill原有的属性,还是怎么回事。另外js也无法获取到chrome自动填充的表单的value值,所以网上盛传的使用jquery解决的方法也是不凑效,最多也就只能去掉黄色背景,而自动填充的value却被移除了。chrome自动填充的表单的value值是存在DocumentFragment里的div中的,如果有哪位童鞋知道怎么获取chrome自动填充的表单的value值,还请指教一下。

免责声明:文章转载自《chrome表单自动填充导致input文本框背景变成偏黄色问题解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MyCat 的入门和放弃Android打开相机进行人脸识别,使用虹软人脸识别引擎下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jquery--监听checkbox多选框是否选中,展示输入框

<div> <input type="checkbox" name="add_choice" onchange="javascript:oBtAddChoice();"> 是否添加姓名 &nbsp; &nbsp; &nbsp; <input type="text" name="nam...

利用css3制作的几个loading图

先看图,多数是从别人那里看的效果直接仿的,先开随笔,有了创意继续加 其实3个之后,脑子里立刻有个第四个的制作思路,无外乎是利用border或者块元素变形,然后构思好接下来的行为,写起来也非常简单,5个一共用了半个小时左右,缺的还是思路啊 代码如下 <!doctype html> <html> <head> <me...

转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树。 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题所以没有动手处理。今天闲来无事琢磨了一下这个需求。我的解决思路如下所示: 1、监听文本框的onkeyup事件;实时传递其值到某个函数; 2、编写某个函数接收...

自定义组件支持双向绑定的实现

  假设有这样一个单文件组件:CustomerInput.vue,其内容如下: <template> <div> <input v-bind:value="value" v-on:input=$emit('input', $event.target.value)""></input&...

Chrome 插件特性及实战场景案例分析

一、前言 提起Chrome扩展插件(Chrome Extension),每个人的浏览器中或多或少都安装了几个插件,像一键翻译、广告屏蔽、录屏等等,通过使用这些插件,可以有效的提高我们的工作效率;但有时候,我们想要的某个功能市面上没有现成的插件,作为开发者自然而然想到,自己是否可以动手开发一个定制化的插件?网上目前很多不错的关于Chrome插件的开发教程,可...

radio改变时触发事件

<input type="radio" value="1" checked="" name="purifyse">安装<input type="radio" value="0" name="purifyse" >未安装 //改变$(':radio').click(function(){var showFlag = $('input:...