这本来是一个极简单的问题,
原input表单
<input type="text" name="address"/>
默认情况下,浏览器会记录用户网页上提交的输入框的信息。这使得浏览器能够提供自动补全(在用户开始输入的时候给用户提供可能的内容)和自动填充(在加载的时候预先填充某些字段)功能
有些时候我们不需要浏览器自动补全和自动填充,我们可以
<input type="text" name="address" autocomplete="off" />
加上autocomplete="off"属性就关闭自动完成
设置 autocomplete="off" 会有两种效果:
这会告诉浏览器,不要为了以后在类似表单上自动填充而保存用户输入的数据。但浏览器不一定遵守。
这会阻止浏览器缓存会话历史记录中的数据。若表单数据缓存于会话历史记录,用户提交表单后,再点击返回按钮返回之前的表单页面,则会显示用户之前输入的数据。
如果即使在 autocomplete 已经设置为 off 时,浏览器仍继续提供输入建议,那么你需要更改输入元素的 name 属性。
自动填充属性和登录
现代浏览器实现了内建的密码管理功能:当用户在一个网站上输入了用户名和密码,浏览器会为用户提供记忆功能。当用户再次访问这个网站时,浏览器使用保存的值自动填写登录字段。
另外,浏览器可让用户指定一个主密码用来加密存储的登录信息。
即使没有主密码,浏览器内置的密码管理对安全也有益无害。由于用户不需要记住已被浏览器存储的密码,因此他们可以放心选择更强的密码。
由于这个原因,许多现代浏览器都不支持在登录字段中设置 autocomplete="off" :
如果一个网站为表单设置了autocomplete="off",表单中包含用户名和密码字段,浏览器仍会为这次登录提供记忆功能,并且如果用户同意,用户在下一次访问网站时,浏览器会自动填写这些字段。
如果网站给用户名和密码的输入框设置了 autocomplete="off",浏览器仍会为这次登录提供记忆功能,并且如果用户同意,用户在下一次访问网站时,浏览器会自动填写这些字段。
这是 Firefox(38+)、Google Chrome(34+)、Internet Explorer(11+)上的表现
这个问题虽然简单,但在有些些场景下就会带来用户体验的困扰,优其在input在做为百度地图和高地图地址下拉选择时自带的complete和地图的下拉complete会有冲突,导致客户可能下拉的是浏览器提供的选项,而不是百度或高德接口返回的数据
这个错误开发者很难发现是浏览器搞的鬼