我有一个使用HTML5的新网站。一切都有效,除了LESS样式表和Facebook标签。但是,Chrome无法正常自动填充。如果我在名字字段中键入'chr',我会在其下方输入标准的自动填充,但突出显示,单击或以其他方式选择自动填充选项并不能完成表单。自动填充下拉列表只是消失了。
我猜我的HTML中有些内容会让自动填充代码混乱,但我似乎无法在网上找到有关Chrome自动填充实施的信息以及无法使用时要查找的内容。
编辑:我知道Autofill工作正常,因为它适用于其他网站,甚至是我们开发的其他网站。它必须是这个网站上的HTML特有的东西。
答案 0 :(得分:15)
如果以异步方式提交表单,Chrome将无法保存密码或自动填充数据。例如,如果您提交以下表单,Chrome会提示您保存密码:
<form action="/signin">
<input type="text" name="email" />
<input type="password" name="password" />
<button type="submit">Sign In</button>
</form>
但是,如果绑定到submit
事件并覆盖默认行为,则不会出现提示,并且不会保存自动填充数据:
$(function(){
$('form').submit(function(e){
e.preventDefault();
$.post($(this).attr('action'), $(this).serialize());
});
});
在20.0中测试
答案 1 :(得分:7)
Chrome似乎只支持使用POST方法自动填充表单。这可能是最新版本的安全更新。
如果您这样做,自动填充功能将起作用:
<form id="myForm" action="?go" method="post">
如果您省略该方法或将其设置为get:
,则无效 <form id="myForm" action="?go" method="get">
<form id="myForm" action="?go">
答案 2 :(得分:3)
我在HTML中知道阻止它的唯一方法是在输入上设置:autocomplete =“off”。
我知道有时使用自动填充功能会导致下拉不起作用,但不会出现文本框。
答案 3 :(得分:2)
我刚刚对这个问题进行了一段时间的讨论,我发现了一个“名字”属性 像“email-2”这样的破折号会导致Chrome无法自动填写该字段。 在我的情况下,我已将其更改为email2,现在它可以工作。 它只影响“name”属性,而“id”属性没有任何区别。
我希望这可以帮助别人节省时间这么愚蠢的错误。
来自阿根廷的问候!
答案 4 :(得分:0)
很抱歉,我无法给你一个明确的答案,但我会从页面中删除除输入字段之外的所有内容。如果它工作,那么我将开始“二进制搜索” - 删除一半的原始布局,看看它是否有效,如果不是 - 删除剩下的一半,依此类推,直到找到问题行。
同样可以应用于css,js等。这是一种非常有效的搜索错误的方法(对于1024行代码,您只需10步即可找到确切的问题行。)
答案 5 :(得分:-1)
只有那些需要自动填充的元素应该在表单内部。否则自动填充不会工作。只在表单下面的那些文本框。如果你已经有涉及其他元素的表单,将它们分开并在文本框周围放置新的表单标签需要自动填充,其中没有其他内容。