`

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

    博客分类:
  • web
阅读更多

 

chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式:

input:-webkit-autofill { 
background-color: #FAFFBD; 
background-image: none; 
color: #000; 
} 

 在有些情况下,这个黄色的背景会影响到我们界面的效果,尤其是在我们给input文本框使用图片背景的时候,原来的圆角和边框都被覆盖了: 

 

 

情景一: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值,还请指教一下。

 

 

其它方法:

 input:-webkit-autofill {  

     background-color: hsl(65, 100%, 87%);  

     background-image: none;  

     color: #000000;  

}  

这个修改起来很简单,在form表单添加一个属性就OK了

 

1.  autocomplete="off"  

这样就OK了

 

<form action="user_edit.action" method="post" onsubmit="return check_edit();" autocomplete="off" >            ...................  

</form>  

 

去掉很粗的边框,给input添加outline:none;

 

 

 

 

 

 


 

 

 

 

 

  • 大小: 3.3 KB
分享到:
评论

相关推荐

    登录不弹框提示保存密码.不自动填充.文本框不拉选择

    在现代Web应用中,用户登录是常见的...通过这些技术,开发者可以确保在Chrome浏览器中实现一个符合特定需求的登录体验,既避免了不必要的密码保存提示,也去除了自动填充和历史下拉选项,从而提供更加可控的用户交互。

    行业分类-设备装置-对页面文本框进行处理的浏览器及方法.zip

    JavaScript库和框架,如jQuery,可以帮助解决这些问题。 5. **自动填充和记忆功能**:现代浏览器提供了自动填充功能,通过保存用户以前输入的数据,提高输入效率。开发者可以通过设置特定的`autocomplete`属性来...

    CSS3注册表单文本框占位符特效

    "CSS3注册表单文本框占位符特效"的实现可能还包括其他创新设计,如输入框填充色变化、动画过渡等,以提升用户体验。例如,当用户开始输入时,输入框的边框可以渐变颜色,或者占位符文本淡出消失,使得表单更具活力和...

    网页自动填表基础教程从简单开始

    这通常涉及到网页的表单元素,如文本框(input)、下拉菜单(select)和复选框(checkbox)等。当这些元素的值被程序化设置后,就可以自动填写表单并提交,大大减少了人工操作的时间。 二、自动化工具介绍 1. **...

    Oweb Voice Input-crx插件

    最后,只需清晰说出想要输入的文字,插件就会自动识别并将其填充到相应的文本框中。 在技术层面,Oweb Voice Input可能采用了先进的自然语言处理(NLP)和深度学习算法,这些技术使得语音识别更加智能,能够理解和...

    css小技巧汇总

    为了解决xmp标签中的内容不自动换行问题,可以设置如下CSS样式: ```css xmp { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4...

    Selenium-test:测试Selenium

    Selenium还可以用来处理表单填充和提交,模拟用户输入和选择。比如,我们可以找到一个文本框并输入文本: ```python input_field = driver.find_element_by_name('username') input_field.send_keys('John Doe') ```...

    HTML5的初级技巧.doc

    - **新属性**:`placeholder`属性用于指定文本框未被填充时显示的提示信息,以增强用户体验。 - **示例**: ```html &lt;input type="email" name="email" placeholder="doug@givethesepeopleair.com"&gt; ``` - 目前...

    mar菜类:登陆页面Ignorancia的Ensayos排序

    3. **按钮(Buttons)**:`&lt;button&gt;`或`&lt;input type="submit"&gt;`用于提交表单。还可以添加`&lt;input type="reset"&gt;`清除表单数据。 4. **提示信息(Labels and Placeholders)**:`&lt;label&gt;`与`for`属性关联输入字段,...

    code-quiz

    `&lt;input&gt;`元素可以用于创建各种类型的输入字段,如文本框(type="text")、选择框(type="checkbox")或单选按钮(type="radio")。`&lt;button&gt;`用于创建可点击的按钮,可能用于提交答案或跳转到下一个问题。 5. CSS...

Global site tag (gtag.js) - Google Analytics