27

我有这个代码:

的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",但什么也没发生。我在这里做错了什么?

4

11 回答 11

33

只需添加:

autocomplete="off"

作为INPUT元素的属性,f.ex:

<input autocomplete="off" id="register_username" type="text" name="username">
于 2012-12-29T02:02:51.870 回答
19

jQuery版本:

$("#register_username").attr("autocomplete", "off");
于 2014-03-07T17:45:34.243 回答
6

检查这个小提琴

 document.getElementById("register_username").autocomplete="off"
于 2012-12-29T07:58:03.860 回答
5

万一有人来这里寻找如何关闭他们的 jquery 自动完成功能:

$("#elementId").autocomplete({
  disabled: true
  });
于 2019-04-25T18:33:45.200 回答
4

虽然我同意,autocomplete="off"应该得到广泛支持并且是最终解决方案,但它不起作用可能是HTML5 规范关于 autocomplete 属性的结果:

自动完成机制必须由用户代理实现,就像用户修改了元素的值一样,并且必须在元素可变的时候完成(例如,在元素刚刚插入文档之后,或者当用户代理停止解析)。

对我来说,这意味着它应该是元素的“原始”属性,并且不能在渲染后添加。而且由于大多数浏览器都在实现新的规范1,因此如果他们在可能根据上述规范更正实现之前就允许使用 javascript 的话。

如果您还没有,请尝试将属性直接添加到控件中,而不是依赖 jQuery 在 [大概] 文档准备好的情况下这样做。

1 由于 HTML5 不是标准,因此我在这里使用规范很随意,但许多浏览器正在实现一些更具体的功能。由于autocomplete自 IE5 以来一直存在,它可能是您可以考虑安全实现的其中之一。

于 2012-12-29T02:11:51.790 回答
4

现在有一天,您需要将“off”更改为另一个随机字符串,例如“nope”:

查询:

$("#register_username").attr("autocomplete", "nope");

HTML:

<input id="register_username" type="text" autocomplete="nope">
于 2018-04-04T04:59:05.567 回答
2
<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' );
    });
});
于 2015-04-27T12:24:40.360 回答
1

对于仍在为这个问题苦苦挣扎的人来说,这种解决方案的组合是唯一对我有用的东西。基于此脚本: https ://github.com/terrylinooo/jquery.disableAutoFill

<form id="myForm">...</form>

将这些放在页面的页脚中:

    <script src="https://cdn.jsdelivr.net/npm/disableautofill/src/jquery.disableAutoFill.min.js"></script> 
    
<script>
        $(document).ready(function () {
            $("input").attr("autocomplete", "new-password");
            $('#myForm').disableAutoFill();
        });
    </script>
于 2020-10-15T21:28:31.647 回答
1

工作时间为 2019 年 4 月 23 日。

如果您想在页面上的所有内容上禁用 Chrome 的自动填充功能,特别是如果您不使用表单而是使用序列化的 jquery 选择器来提交数据。

在运行时执行此操作对我来说效果最好,而且 Chrome 无论如何都会在运行时自动填充,因此这是对抗 Chrome 行为的合理解决方案。

只需在代码底部添加此内容,Chrome 就不会尝试强制自动填充内容:

<script>
    $(document).ready(function () {
        $("input").attr("autocomplete", "new-password");
    });
</script>
于 2019-04-23T16:01:47.777 回答
0

使用 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');
        });
});
于 2018-02-16T21:34:16.913 回答
-1

如果有人来这里寻找如何在他们页面的每个表单上关闭他们的 jquery 自动完成功能:

$('form *').prop('autocomplete', 'off');

于 2020-09-21T07:17:50.497 回答