如何禁用特定输入字段的自动填充

时间:2018-06-25 17:54:49

标签: jquery html css

我正在使用输入字段来使用Google api获取邮政编码,我试图通过使用autocomplete =“ off”来停止自动填充,但仍然具有以前的输入

 <input  onClick="this.select();" type="text" id="postal_code" name="postal_code" autocomplete="off" onFocus="geolocate()">

4 个答案:

答案 0 :(得分:1)

您正在输入字段中使用autocomplete属性。您应该在<form>标记中使用它来切换自动完成功能。

<form action="#" method="get" autocomplete="off">
  First name:<input type="text" name="fname"><br>
</form>
<br>
<br>
<form action="#" method="get" autocomplete="on">
  First name:<input type="text" name="fname"><br>
</form>

答案 1 :(得分:1)

这是适用于所有浏览器的完美解决方案!

TL;DR

将您的输入字段名称和字段 ID 重命名为不相关的名称,例如 'data_input_field_1'。然后将 &#8204; 字符添加到标签的中间。这是一个非打印字符,因此您不会看到它,但它会诱使浏览器不将该字段识别为需要自动完成的字段,因此不会显示内置的自动完成小部件!

详情

几乎所有浏览器都使用字段名称、ID、占位符和标签的组合来确定该字段是否属于可从自动完成中受益的一组地址字段。因此,如果您有一个像 <input type="text" id="address" name="street_address"> 这样的字段,几乎所有浏览器都会将该字段解释为地址字段。因此,浏览器将显示其内置的自动完成小部件。梦想是使用属性 autocomplete="off" 会起作用,但不幸的是,现在大多数浏览器都不遵守该请求。

所以我们需要使用一些技巧来让浏览器不显示内置的自动完成小部件。我们这样做的方法是让浏览器相信该字段根本不是地址字段。

首先将 idname 属性重命名为不会泄露您正在处理地址相关数据的内容。因此,与其使用 <input type="text" id="city-input" name="city">,不如使用类似的东西 <input type="text" id="input-field-3" name="data_input_field_3">。浏览器不知道 data_input_field_3 代表什么。但你知道。

如果可能,不要使用占位符文本,因为大多数浏览器也会考虑到这一点。如果您必须使用占位符文本,那么您必须发挥创意并确保您没有使用任何与地址参数本身相关的词(例如 City)。使用 Enter location 之类的东西可以解决问题。

最后一个参数是附加到字段的标签。但是,如果您像我一样,您可能希望保持标签不变,并向您的用户显示可识别的字段,例如“地址”、“城市”、“州”、“国家”。好吧,好消息:你可以!实现这一点的最佳方法是插入一个零宽度非连接符 &#8204; 作为标签中的第二个字符。因此将 <label>City</label> 替换为 <label>C&#8204;ity</label>。这是一个非打印字符,因此您的用户会看到 City,但浏览器会被诱骗看到 C ity 而无法识别该字段!

任务完成!如果一切顺利,浏览器不应再在这些字段上显示内置地址自动完成小部件!

希望这对您的努力有所帮助!

答案 2 :(得分:0)

  1. 确保可以在输入代码中使用自动填充功能。
  2. 添加这样的几个表单标签是不正确的。
  3. 如果可以显示完整的表单代码...如果可能的话

答案 3 :(得分:0)

尝试将其添加到您的input标签:autocomplete="__away"

Chrome某种程度上不遵循autocomplete="off"指令,因此我们必须使用此替代方法来执行未定义的值。