ng-form和autocomplete ="off"

Kno*_*uch 14 html angularjs

我有一个像这样的角形

<ng-form name="AddTaskForm" autocomplete="off">
   ......
</ng-form>
Run Code Online (Sandbox Code Playgroud)

但是,当我开始输入数据时,chrome仍然提示我先前输入的值.

如何阻止chrome(和所有浏览器)使用先前输入的值显示输入的任何下拉?

我做了一些搜索,发现人们正在编写自定义指令,但不确定这是否真的需要.

在此输入图像描述

Luk*_*uke 20

尽管HTML是HTML5规范的autocomplete一个相当明确的部分,但 Chrome已经突破了他们如何使用该autocomplete属性.最初荣幸autocomplete="off"(2013),他们然后决定开发人员必须使用它错误,浏览器应该忽略它.

这并不意味着没有非常有效的情况,您不希望浏览器自动填充数据(例如在CRM系统上),但总的来说,我们将这些视为少数情况.因此,我们开始忽略Chrome自动填充数据的autocomplete = off.

(来源:2015年的Chromium bug标记为WontFix)

根据选区优先顺序:

在发生冲突的情况下,考虑使用者而不是实施者而不是理论上纯度的说明者.换句话说,给用户的成本或困难应该比作者的成本更重要; 反过来应该给予实施者更多的权重而不是成本......

......这让我们的开发人员处于不幸的地方寻找解决方案.这从MDN文章概述了目前的状态很好,并提供设定的这个解决方案autocompletenew-password:

如果作者想要阻止用户管理页面中的密码字段自动填充,用户可以为自己以外的其他人指定新密码,则应指定autocomplete ="new-password",但是尚未实现对此的支持.所有浏览器.

我不确定它会保持多长时间,但就目前而言(2016年9月在Chrome 53中测试过),这是最简单的解决方案:

<input type="password" name="someName" autocomplete="new-password" />
Run Code Online (Sandbox Code Playgroud)

编辑:注意:这有副作用,要求用户保存密码,可能会覆盖现有密码.因此,尽管它"防止密码字段的自动填充",但它并不完全从自动完成混乱中删除该元素.

编辑:更新信息:正如Alexander Abakumov在他的回答中指出的那样,Chrome的新版本再次尊重该autocomplete=off属性.他让它适用于Chrome 68,适用于Chrome 70.


Ale*_*mov 6

autocomplete="off"现在工作。在当前的 Chrome 70.0.3538.110 中测试。

演示


ben*_*pps 1

看起来 Chrome 忽略了autocompleteindividual 的属性inputs;旧的解决方法是autocomplete=off像您所做的那样添加整个表单(这是一个非常不完整的解决方案,因为它随后会将此功能添加到表单中包含的所有输入中,这可能是不需要的)。

无论如何,从这篇文章来看,解决方法似乎不再可用,因此您可能需要一个指令。我知道这可能不是您想要的,但我认为这是您对 chrome 的唯一选择。

myApp.directive('autocomplete', function() {

    return {    

        restrict: 'A',
        link: function( $scope, el, attr ) {

            el.bind('change', function(e) {

                e.preventDefault();

            }
        }
    }

});
Run Code Online (Sandbox Code Playgroud)