当使用xhtml1-transitional。使用以下HTML收集一个信用卡号

<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>

将在W3C验证器上标记一个警告:

没有“自动完成”属性。

是否有一种符合标准的方法来禁用浏览器自动完成表单中的敏感字段?


当前回答

有效的自动补全

<script type="text/javascript">
    /* <![CDATA[ */
    document.write('<input type="text" id="cardNumber" name="cardNumber" autocom'+'plete="off"/>');
    /* ]]> */ 
</script>

其他回答

不,在Mozila Wiki上有一篇好文章。

我将继续使用无效属性。我认为这就是实用主义应该战胜认可的地方。

用JavaScript设置怎么样?

var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false

这并不完美,但您的HTML将是有效的。

使用随机的“name”属性对我来说很有用。

我在发送表单时重置了name属性,以便在发送表单时仍然可以通过名称访问它。(使用id属性存储名称)

我认为有一个更简单的方法。 用一个随机的名字(通过javascript)创建一个隐藏的输入,并设置用户名。重复输入密码。这样,您的后端脚本就可以确切地知道适当的字段名称是什么,同时保持自动补全在黑暗中。

我可能错了,但这只是个想法。

我在2020年就做到了!

我基本上创建了一个css类,对我的输入应用-webkit-text-security。

这里有一个最近讨论的链接: https://stackoverflow.com/a/64471795/8754782