mag*_*dev 4 javascript google-apps google-places-api google-places
我在我的网站上输入地址时使用 Google Places API:
<input type="text" name="street[]" id="street1" autocomplete="none" />
Run Code Online (Sandbox Code Playgroud)
但是,一旦加载了 Google 地方信息,它就会用 autocomplete="off" 替换我的 autocomplete="none"。问题是 Google Chrome 不兼容“关闭”值并保持显示自动填充建议。有没有什么办法解决这一问题 ?
谢谢 !
这是一个适用于所有浏览器的方法:
将您的输入字段名称和字段 ID 重命名为不相关的名称,例如'data_input_field_1'. 然后将该‌字符添加到标签的中间。这是一个非打印字符,因此您不会看到它,但它会欺骗浏览器不将该字段识别为需要自动完成的字段,因此不会显示内置的自动完成小部件!
几乎所有浏览器都使用字段名称、ID、占位符和标签的组合来确定该字段是否属于一组可以受益于自动完成的地址字段。因此,如果您有一个类似的字段,<input type="text" id="address" name="street_address">几乎所有浏览器都会将该字段解释为地址字段。因此,浏览器将显示其内置的自动完成小部件。梦想是使用该属性autocomplete="off"可以工作,不幸的是,现在大多数浏览器都不遵守该请求。
因此,我们需要使用一些技巧来让浏览器不显示内置的自动完成小部件。我们要做的方法是欺骗浏览器,让其相信该字段根本不是地址字段。
首先将id和name属性重命名为不会泄露您正在处理与地址相关的数据的名称。因此,不要使用<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就可以解决问题。
最后一个参数是附加到字段的标签。但是,如果您像我一样,您可能希望保持标签完整并向用户显示可识别的字段,例如“地址”、“城市”、“州”、“国家/地区”。好消息:你可以!实现此目的的最佳方法是插入零宽度非连接字符‌作为标签中的第二个字符。因此替换<label>City</label>为<label>C‌ity</label>. 这是一个非打印字符,因此您的用户将看到City,但浏览器将被欺骗看到C ity但无法识别该字段!
任务完成!如果一切顺利,浏览器不应再在这些字段上显示内置地址自动完成小部件!
希望这对您的努力有所帮助!