我有这段代码:
html:
<input id="register_username" type="text">
<input id="register_password" type="text">
<input id="register_repeatpassword" type="text">
<input id="register_email" type="text">
Jquery:
$(document).ready(function(){
$('#register_username').attr('autocomplete','off');
$('#register_password').attr('autocomplete','off');
$('#register_repeatpassword').attr('autocomplete','off');
$('#register_email').attr('autocomplete','off');
});
我想禁用某些浏览器的自动完成功能,并且实际上让用户键入整个字段但代码不起作用,下拉菜单仍然出现,用户仍然可以选择之前键入的内容。我也试过用autocomplete="off"
但没有发生任何事情。我在这里做错了什么?
答案 0 :(得分:29)
只需添加:
autocomplete="off"
作为INPUT
元素的属性,f.ex:
<input autocomplete="off" id="register_username" type="text" name="username">
答案 1 :(得分:12)
jQuery 版本:
$("#register_username").attr("autocomplete", "off");
答案 2 :(得分:6)
检查此fiddle
document.getElementById("register_username").autocomplete="off"
答案 3 :(得分:3)
虽然我同意,autocomplete="off"
应得到广泛支持,并且是最终解决方案,但它无效可能是HTML5 spec on the autocomplete attribute的结果:
自动完成机制必须由用户代理实现,就像用户修改了元素的值一样,必须在元素可变的时候完成(例如,在元素之后已插入文档,或用户代理停止解析时。)
对我而言,这意味着它应该是元素的“原始”属性,并且不能在渲染后添加。并且由于大多数浏览器都在实现新的规范 1 ,因此很可能在他们根据上述规范修正实现之前允许使用javascript。
如果您还没有,请尝试将属性直接添加到控件中,而不是依赖于jQuery这样做[推测]文档就绪。
1 我在这里使用spec,因为HTML5不是标准,但很多浏览器正在实现一些更具体的功能。自从IE5以来autocomplete
已经存在,它可能是您可以考虑安全实施的那些之一。
答案 4 :(得分:1)
<form id='myForm'>
<input id="register_username" type="text">
<input id="register_password" type="text">
<input id="register_repeatpassword" type="text">
<input id="register_email" type="text">
</form>
$(document).ready(function(){
$('#myForm').on( 'focus', ':input', function(){
$(this).attr( 'autocomplete', 'off' );
});
});
答案 5 :(得分:1)
现在有一天你需要改变&#34;关闭&#34;另一个随机字符串,如&#34; nope&#34;:
<强> Jquery的:强>
$("#register_username").attr("autocomplete", "nope");
<强> HTML:强>
<input id="register_username" type="text" autocomplete="nope">
答案 6 :(得分:1)
从2019年4月23日开始工作。
如果要在页面上的所有内容上禁用Chrome的自动填充功能,尤其是如果您不使用表单而是使用序列化的jQuery选择器提交数据时,尤其如此。
在运行时执行此操作对我而言是最好的结果,Chrome仍会在运行时自动填充,因此这是应对Chrome行为的合理解决方案。
只需在代码底部添加此内容,Chrome便不会尝试强制自动填充内容:
<script>
$(document).ready(function () {
$("input").attr("autocomplete", "new-password");
});
</script>
答案 7 :(得分:0)
万一有人来这里寻找如何关闭其jQuery自动完成功能:
$("#elementId").autocomplete({
disabled: true
});
答案 8 :(得分:0)
如果有人来这里寻找如何在其页面的每种形式上关闭其jQuery自动完成功能:
$('form *').prop('autocomplete', 'off');
答案 9 :(得分:0)
对于仍然在这个问题上挣扎的任何人,这种解决方案组合是唯一对我有用的东西。 基于此脚本: https://github.com/terrylinooo/jquery.disableAutoFill
del df['ID']
将它们放在页面的页脚中:
interface SpecificAction extends Action {
String CONSTANT_FIELD = "Specific field";
}
class Testt<A extends SpecificAction>{
void someMethod(){
System.out.println(A.CONSTANT_FIELD); // Fine
}
}
答案 10 :(得分:-1)
使用jQuery,我在布局页面中执行此操作,或者在网站的每个页面上显示一些HTML。
$(document).ready(function () {
//when the page is done loading, disable autocomplete on all inputs[text]
$('input[type="text"]').attr('autocomplete', 'off');
//do the same when a bootstrap modal dialog is opened
$(window).on('shown.bs.modal', function () {
$('input[type="text"]').attr('autocomplete', 'off');
});
});