谷歌浏览器认为我的输入
<input
name="firstName"
id="firstName" type="text"
placeholder="John" font-size="16"
class="sc-fznKkj XyZMK"
>
是信用卡,如自动完成字段检查器所示,并且提供了已保存的信用卡。它也在lastName
字段上执行此操作,并在另一种形式的某个位置执行另一个数字类型字段。
我不明白的是,它在我们的开发环境中按预期工作,并且仅在暂存中出错(两者都是几乎相同的部署过程,相同的 s3 + cloudfront 托管,相同构建的相同代码(。
有什么线索吗?
它变得更奇怪:将name
字段更改为first-name
而不是firstName
修复它。我不需要更改两个输入名称,只需更改第一个即可。但是我肯定应该可以随心所欲地命名我的领域吗?
在 HTML 表单中,autocomplete
属性用于告诉浏览器应该将哪种类型的数据放入特定输入。
(更多信息在MDN web docs。
例如,对于名字,应使用autocomplete="given-name"
,对于姓氏,应使用autocomplete="family-name"
。
将这些属性添加到错误识别的输入中应该可以解决您的问题。
至于为什么某些输入没有autocomplete
属性仍然被正确识别:当找不到autocomplete
属性时,浏览器会尝试"智能地"决定应该放入该字段的内容。
为此,最常用的是name
属性。例如,如果它是username
或password
,浏览器可能会识别这些单词,因为它们是非常常见的输入描述。如果myinput6
,则浏览器将无法识别任何内容。
在您的情况下,浏览器似乎识别name="first-name"
,但无法识别略有不同的name="firstName"
。但是,正如您所说,您应该能够为您的name
属性提供您想要的任何值,为此,您应该使用autocomplete
属性。