当使用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验证器上标记一个警告:
没有“自动完成”属性。
是否有一种符合标准的方法来禁用浏览器自动完成表单中的敏感字段?
当前回答
用JavaScript设置怎么样?
var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false
这并不完美,但您的HTML将是有效的。
其他回答
使用随机的“name”属性对我来说很有用。
我在发送表单时重置了name属性,以便在发送表单时仍然可以通过名称访问它。(使用id属性存储名称)
Autocomplete ="off"这应该解决所有现代浏览器的问题。
<form name="form1" id="form1" method="post" autocomplete="off"
action="http://www.example.com/form.cgi">
[...]
</form>
在当前版本的Gecko浏览器中,自动完成属性工作得很好。对于早期版本,即Netscape 6.2,它只适用于带有“地址”和“名称”的表单。
更新
在某些情况下,即使autocomplete属性被设置为关闭,浏览器也会继续建议自动补全值。这种出乎意料的行为可能会让开发人员感到困惑。真正强制no-autocompletion的技巧是为属性分配一个随机字符串,例如:
autocomplete="nope"
由于这个随机值不是有效值,浏览器将放弃。
Documetation
if (document.getElementsByTagName) {
var inputElements = document.getElementsByTagName("input");
for (i=0; inputElements[i]; i++) {
if (inputElements[i].className && (inputElements[i].className.indexOf("disableAutoComplete") != -1)) {
inputElements[i].setAttribute("autocomplete","off");
}
}
}
这个解决方案对我很管用:
$('form,input,select,textarea').attr("autocomplete", "nope");
如果你想在这个区域使用自动填充:在元素中添加autocomplete="false" 例:
<input id="search" name="search" type="text" placeholder="Name or Code" autcomplete="false">
不,在Mozila Wiki上有一篇好文章。
我将继续使用无效属性。我认为这就是实用主义应该战胜认可的地方。