当使用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)创建一个隐藏的输入,并设置用户名。重复输入密码。这样,您的后端脚本就可以确切地知道适当的字段名称是什么,同时保持自动补全在黑暗中。
我可能错了,但这只是个想法。
这个解决方案对我很管用:
$('form,input,select,textarea').attr("autocomplete", "nope");
如果你想在这个区域使用自动填充:在元素中添加autocomplete="false" 例:
<input id="search" name="search" type="text" placeholder="Name or Code" autcomplete="false">
如果W3C提出了一种与(X)HTML4一起工作的方法,我会感到非常惊讶。自动补全功能完全是基于浏览器的,是在过去几年中引入的(远远落后于HTML4标准的编写)。
不过,如果HTML5有这样的功能也不足为奇。
编辑:正如我所想,HTML5确实有这个功能。要将页面定义为HTML5,请使用以下doctype(即:将其作为源代码中的第一个文本)。请注意,并非所有浏览器都支持这个标准,因为它仍处于草案阶段。
<!DOCTYPE html>
用JavaScript设置怎么样?
var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false
这并不完美,但您的HTML将是有效的。
使用随机的“name”属性对我来说很有用。
我在发送表单时重置了name属性,以便在发送表单时仍然可以通过名称访问它。(使用id属性存储名称)