使用 xhtml1-transitional.dtd
文档类型时,使用以下 HTML 收集信用卡号码:
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
在 W3C 验证器上会产生警告:
不存在 "autocomplete" 属性。
是否有符合标准的方法可以禁用表单中敏感字段的浏览器自动完成?
使用 xhtml1-transitional.dtd
文档类型时,使用以下 HTML 收集信用卡号码:
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
在 W3C 验证器上会产生警告:
不存在 "autocomplete" 属性。
是否有符合标准的方法可以禁用表单中敏感字段的浏览器自动完成?
对我来说,使用随机的“name”属性有效。
在发送表单时,我将重置名称属性,因此您仍然可以通过名称访问它(使用id属性存储名称)。
虽然不是最理想的方法,但您可以在每次呈现文本框时更改其ID和名称 - 您还必须在服务器端跟踪它,以便可以获取数据。
不确定这是否有效,只是一个想法。
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");
}
}
}
我认为有一种更简单的方法。 通过javascript创建一个带有随机名称的隐藏输入框,并将用户名设置为其中一个。然后重复此步骤以设置密码。这样,您的后端脚本就知道适当的字段名称,同时使自动完成无法识别。
我可能是错的,但这只是一个想法。
我在2020年做到了这个!
我基本上创建了一个CSS类,将-webkit-text-security应用于我的输入。
以下是更近期讨论的链接: https://dev59.com/uVIH5IYBdhLWcg3wL6dJ#64471795
这个解决方案对我有效:
$('form,input,select,textarea').attr("autocomplete", "nope");
如果您想在此区域使用自动填充功能:请在元素中添加autocomplete="false"
例如:
<input id="search" name="search" type="text" placeholder="Name or Code" autcomplete="false">
<script type="text/javascript">
/* <![CDATA[ */
document.write('<input type="text" id="cardNumber" name="cardNumber" autocom'+'plete="off"/>');
/* ]]> */
</script>