是否可以使用CSS禁用表单元素(特别是文本字段)上的自动完成功能?
我使用的标签库不允许使用autocomplete元素,并且我想在不使用Javascript的情况下禁用autocomplete。
Answers:
您可以使用一次生成的id
和name
每次的,这是不同的,因此浏览器无法记住该文本字段,因此将无法建议某些值。
至少这是跨浏览器安全的替代方法,但是我建议使用RobertsonM(autocomplete="off"
)的答案。
autocomplete="off"
在Browser X版本(当前+ 1)中,将使用诸如此类的任何提示。(例如,最新的Google Chrome浏览器忽略autocomplete = off。)
id
它仍然会将其保存在缓存中(即,存储在用户的硬盘上)。对某人的信用卡号或任何其他敏感信息而言,这是一件可怕的事情。此外,它不必要地使用户的磁盘驱动器混乱。每次他们访问您的页面时,新的(类似Cookie的)文件都会保存在他们的计算机上。只是想尝试一下,尝试清除您的Chrome缓存,看看它将释放多少空间(如果您有一段时间没有这样做了)。这就是为什么我称其为可怕的想法。
就目前而言,CSS中没有“自动完成关闭”属性。但是,html为此提供了一个简单的代码:
<input type="text" id="foo" value="bar" autocomplete="off" />
如果您正在寻找一个站点范围的效应器,那么一个简单的方法就是简单地让js函数运行所有'input'并添加此标签,或者寻找相应的CSS类/ id。
autocomplete属性在Chrome和Firefox(!)中可以正常工作,但另请参阅是否有W3C有效的方法来禁用HTML表单中的自动完成功能?
autocomplete="anyrandominvalidvalue"
会起作用。
您可以通过jQuery轻松实现
$('input').attr('autocomplete','off');
form
是唯一有效的方法。不input
。谢谢。
如果您使用的是form
,则可以使用禁用所有自动完成功能,
<form id="Form1" runat="server" autocomplete="off">
我尝试了从问题解答和网络上其他文章中提出的所有建议方法,但无论如何都无法正常工作。我在表单元素中尝试了autocomplete =“ new-random-value”,autocomplete =“ off”,使用如下客户端脚本,但在$(document).ready()之外,提到了其中一个用户:
$(':input').on('focus', function () {
$(this).attr('autocomplete', 'off')
});
我发现浏览器中的另一个优先级可能导致这种奇怪的行为!因此,我进行了更多搜索,最后,我仔细阅读了这篇好文章中的以下内容:
因此,许多现代浏览器不支持对登录字段使用autocomplete =“ off”:
如果网站为设置了autocomplete =“ off”,并且该表单包含用户名和密码输入字段,则浏览器仍会记住该登录信息;如果用户同意,浏览器将在下次用户时自动填充这些字段。访问页面。如果站点为用户名和密码字段设置了autocomplete =“ off”,那么浏览器仍会记住该登录信息,如果用户同意,则下次用户访问该页面时,浏览器将自动填充这些字段。这是Firefox(自版本38),Google Chrome(自版本34)和Internet Explorer(自版本11)开始的行为。
如果要定义用户管理页面,用户可以在其中为其他人指定新密码,因此要防止自动填写密码字段,则可以使用 autocomplete =“ new-password” ; 但是,尚未在Firefox上实现对此值的支持。
它只是工作。我专门尝试了chrome,希望它能继续起作用并为他人提供帮助。
感谢@ahhmarr的解决方案,我能够在Angular + ui-router环境中解决相同的问题,我将在这里与有兴趣的人分享。
在我的代码中,index.html
我添加了以下脚本:
<script type="text/javascript">
setTimeout(function() {
$('input').attr('autocomplete', 'off');
}, 2000);
</script>
然后,为了涵盖状态更改,我在根控制器中添加了以下内容:
$rootScope.$on('$stateChangeStart', function() {
$timeout(function () {
$('input').attr('autocomplete', 'off');
}, 2000);
});
超时用于html在应用jquery之前呈现。
如果您找到更好的解决方案,请告诉我。
我只是用'new-password'
,而不是'off'
上自动完成。
并且我也尝试使用此代码并且可以正常工作(至少在我看来是这样),我使用WP和GravityForm作为您的信息
$('input').attr('autocomplete','new-password');
$('input').attr('autocomplete','off');