Chrome 自动完成认为我的 "firstName" 字段是信用卡

Chrome autocomplete thinks my "firstName" field is a credit card

这个问题已经在其他地方被问过,但没有得到回答。 Google Chrome 认为我的输入

<input name="firstName" id="firstName" type="text" placeholder="John" font-size="16" class="sc-fznKkj XyZMK">

是一张信用卡,如自动完成字段检查器(实验性标志)和提供已保存信用卡的自动完成所示。

它也在 lastName 字段和另一个数字类型字段上以另一种形式执行此操作。

我不明白的是它在我们的开发环境中按预期工作,并且只在暂存阶段变得疯狂(两者几乎相同的部署过程,相同的 s3 + 云端托管,相同构建的相同代码).

有什么线索吗?

它变得更奇怪:将 name 字段更改为 first-name 而不是 firstName 修复了它。我不需要更改两个输入名称,只需更改第一个即可。但是我应该可以随心所欲地命名我的领域,不是吗?

在 HTML 表单中,autocomplete 属性用于告诉浏览器什么类型的数据应该进入特定的输入。

(更多信息在 MDN web docs。)

例如,对于名字,您应该使用 autocomplete="given-name",对于姓氏,则使用 autocomplete="family-name"

将这些属性添加到被错误识别的输入应该可以解决您的问题。


关于为什么某些输入没有 autocomplete 属性但仍能被正确识别:当没有找到 autocomplete 属性时,浏览器会尝试决定 'intelligently'放入该字段。

为此,最常用的是 name 属性。例如,如果是 usernamepassword,浏览器可能会识别这些词,因为它们是非常常见的输入描述。如果是myinput6,那么浏览器将无法识别任何内容。

在您的情况下,浏览器似乎可以识别 name="first-name",但无法识别略有不同的 name="firstName"。但是,正如您所说,您应该能够为 name 属性赋予任何您想要的值,为此,您应该使用 autocomplete 属性。