我想知道是否有某种特殊的标记,以启用Chrome自动填充功能的特定形式。我只发现了关于如何禁用它的问题,但我想知道我是否可以向html代码添加某种标记,以便告诉浏览器“这是地址的输入”或“这是邮政编码字段”,以正确地填充它(假设用户激活了此功能)。


当前回答

在我的例子中,$('#EmailAddress')。attr(“自动完成”,“关闭”);没有工作。 但以下工作在chrome版本67由jQuery。

$('#EmailAddress').attr('autocomplete', 'new-email');
$('#Password').attr('autocomplete', 'new-password');

其他回答

这是真正的答案:

http://jsfiddle.net/68LsL1sq/1/ <label for="name">Nom</label> 这不是:http://jsfiddle.net/68LsL1sq/2/ <label for="name">否</label>

唯一的区别在于标签本身。“Nom”来自葡萄牙语中的“Name”或“Nome”。

这就是你所需要的:

表单包装器; A <label for="id_of_field">Name</label> An <input id="id_of_field"></input>

仅此而已。

您需要适当地命名元素,以便浏览器自动填充它们。

下面是IETF的规范:

http://www.ietf.org/rfc/rfc3106.txt1

2017年更新:看起来凯蒂的答案比我的有更多的最新信息。未来的读者们,给她的答案投上你的赞成票吧。

这是一个很好的问题,关于这个问题的文档很难找到。实际上,在很多情况下,你会发现Chrome的自动填充功能“只是工作”。例如,下面的html代码段会生成一个表单,至少对我来说(Chrome v. 18),在点击第一个字段后会自动填充:

<!DOCTYPE html>
<html>
<body>    
<form method="post">
  First name:<input type="text" name="fname" /><br />
  Last name: <input type="text" name="lname" /><br />
  E-mail: <input type="text" name="email" /><br />
  Phone: <input type="text" name="phone" /><br />
  Address: <input type="text" name="address" /><br />
</form>
</body>
</html>

然而,这个答案并不令人满意,因为它把解决方案留在了“魔法”的领域。深入研究后,我发现Chrome(以及其他支持自动填充的浏览器)主要依靠上下文线索来确定应该填充到表单元素中的数据类型。此类上下文线索的示例包括输入元素的名称、围绕元素的文本以及任何占位符文本。

然而,最近Chrome团队承认这是一个不令人满意的解决方案,他们已经开始推动标准化。谷歌网站管理员小组最近讨论了这个问题,解释道:

不幸的是,到目前为止,网站管理员很难确保Chrome和其他表单填充提供商能够正确地解析他们的表单。有些标准是存在的;但它们给网站的实施带来了沉重的负担,所以它们在实践中使用得并不多。

(他们所指的“标准”是Avalanchis上面回答中提到的规范的最新版本。)

谷歌的帖子继续描述了他们提出的解决方案(在帖子的评论中遭到了大量批评)。他们建议使用一个新的属性来达到这个目的:

只需在input元素中添加一个属性,例如电子邮件地址字段可能是这样的: <input type= " text " name= " field1 " x-autocompletetype= " email " />

...其中x-代表“实验性”,如果&当这成为标准,将被删除。阅读这篇文章了解更多细节,或者如果你想深入挖掘,你可以在whatwg wiki上找到更完整的建议解释。


更新: 正如在这些深刻的回答中指出的,Chrome用于识别/识别公共字段的所有正则表达式都可以在autofill_regex_constants.cc.utf8中找到。因此,要回答最初的问题,只需确保html字段的名称与这些表达式匹配。一些例子包括:

名字:" First .*name|首字母|fname| First $" 姓氏:" Last .*name|lname|姓氏| Last $|secondname|family.*name" 电子邮件:“e。?邮件” 地址(第一行):“Address .*line|address1|addr1|street” zipcode:“邮政邮政| |职位。*代码| pcode | ^ 1 z $”

下面是谷歌自动填充“名称”的新列表。所有允许的语言中都有支持的名称。

autofill_regex_constants.cc

在我的例子中,$('#EmailAddress')。attr(“自动完成”,“关闭”);没有工作。 但以下工作在chrome版本67由jQuery。

$('#EmailAddress').attr('autocomplete', 'new-email');
$('#Password').attr('autocomplete', 'new-password');