当使用xhtml1-transitional。使用以下HTML收集一个信用卡号
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
将在W3C验证器上标记一个警告:
没有“自动完成”属性。
是否有一种符合标准的方法来禁用浏览器自动完成表单中的敏感字段?
当使用xhtml1-transitional。使用以下HTML收集一个信用卡号
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
将在W3C验证器上标记一个警告:
没有“自动完成”属性。
是否有一种符合标准的方法来禁用浏览器自动完成表单中的敏感字段?
当前回答
Note that there's some confusion about location of the autocomplete attribute. It can be applied either to the whole FORM tag or to individual INPUT tags, and this wasn't really standardized before HTML5 (that explicitly allows both locations). Older docs most notably this Mozilla article only mentions FORM tag. At the same time some security scanners will only look for autocomplete in INPUT tag and complain if it's missing (even if it is in the parent FORM). A more detailed analysis of this mess is posted here: Confusion over AUTOCOMPLETE=OFF attributes in HTML forms.
其他回答
我认为有一个更简单的方法。 用一个随机的名字(通过javascript)创建一个隐藏的输入,并设置用户名。重复输入密码。这样,您的后端脚本就可以确切地知道适当的字段名称是什么,同时保持自动补全在黑暗中。
我可能错了,但这只是个想法。
HTML 4:否
HTML 5:是
自动完成属性是一个枚举属性。属性 有两种状态。关键字on对应on状态,off对应off状态 关键字映射到关闭状态。属性也可以省略。的 缺少值default是开启状态。关闭状态表示通过 默认情况下,表单中的表单控件将有它们的自动填充字段名 出发的:出发的;on状态表示默认情况下,表单控件在 表单将自动填充字段名称设置为“on”。
参考:W3
如果W3C提出了一种与(X)HTML4一起工作的方法,我会感到非常惊讶。自动补全功能完全是基于浏览器的,是在过去几年中引入的(远远落后于HTML4标准的编写)。
不过,如果HTML5有这样的功能也不足为奇。
编辑:正如我所想,HTML5确实有这个功能。要将页面定义为HTML5,请使用以下doctype(即:将其作为源代码中的第一个文本)。请注意,并非所有浏览器都支持这个标准,因为它仍处于草案阶段。
<!DOCTYPE html>
不理想,但你可以改变id和文本框的名称,每次你渲染它-你必须跟踪它的服务器端,这样你就可以得到数据。
不确定这是否会起作用,这只是一个想法。
如果你使用jQuery,你可以这样做:
$(document).ready(function(){$("input.autocompleteOff").attr("autocomplete","off");});
并在你想要的地方使用autocompleteOff类:
<input type="text" name="fieldName" id="fieldId" class="firstCSSClass otherCSSClass autocompleteOff" />
如果你想要所有的输入都是autocomplete=off,你可以简单地使用:
$(document).ready(function(){$("input").attr("autocomplete","off");});