在 Edge 中禁用输入文本建议?

Disable input text suggestions in Edge?

我构建了一个文本框下拉列表 AngularJS 组件,它在 Chrome、Firefox、Safari 和 Internet Explorer 中运行良好。

此组件的一个特点是您输入一个字符串,然后可以使用 up/down 箭头键滚动浏览建议。

在 Microsoft Edge 中,只要您点击向下箭头,以下文本就会添加到输入框中:

briefly explain your changes (corrected spelling, fixed grammar, improved formatting)

我可以在客户端做些什么来阻止这种情况发生吗?

<form>
    <input type="text" />    
</form>

为了演示这一点,运行 上面的截图,在文本框中输入一些内容,然后在 Edge 上点击向下箭头两次。我希望这不会发生,因为它会破坏我的自动完成功能!

谢谢

如果我的理解正确,你遇到了自动完成功能的问题。只需将 "autocomplete='off'" 添加到您的输入即可禁用该功能。

<input type="text" autocomplete="off"/>

如果你需要它app/site-wide你可以使用jquery:

$('input').attr('autocomplete','off');

或者,如果您像我一样使用 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 之前呈现。

如果您找到更好的解决方案,请告诉我。

来自 Mozilla: 您可以在适用于整个表单的实际表单标签 <form autocomplete='off' ... >...</form> 或单个 <input type='text' /> 标签上设置自动完成。

根据我在 IE 11 和 Edge 上的经验,将它放在表单上是可行的,但单个标签不起作用。我尝试在 Chrome 上进行测试,但这些字段已经无法自动完成。

请阅读完整的 Article 以获取更多详细信息。

注意

大多数浏览器忽略此登录字段。

不幸的是,none 以上建议在最新的 Edge 中对我有用。但是,此解决方案确实:

<input type="text" autocomplete="off" list="autocompleteOff" 
    id="fieldId" name="fieldname" placeholder="Placeholder here" />

这会强制 Edge 查找名为 autocompleteOff 的数据查找列表,该列表不存在。对我来说是一种享受。

另一个优点是它是纯粹的 HTML,不需要 CSS 或 JS。

2021 年更新:

另一种对我非常有效的解决方案是将 readonly 属性添加到该字段,然后在几毫秒的短暂延迟后使用 JQuery 删除标签。 readonly 属性导致 Edge(和其他)忽略该字段。

如果您想在使用 autocomplete="off" 时删除 chrome 中输入的自动完成,您还必须删除 id,如果您不删除输入中的 id,则自动完成行不通!

简单示例:

<input type="text" autocomplete="off" list="autocompleteOff" 
     name="fieldname" placeholder="Placeholder here" />

你可以用名字处理你的输入 ;) ,这对我来说很好。

只需 autocomplete="off" list="autocompleteOff" 输入即可完成工作!

<input type="text" autocomplete="new-password" />

If you are defining a user management page where a user can specify a new password for another person, and therefore you want to prevent autofilling of password fields, you can use autocomplete="new-password"

MDN reference

它也适用于 non-password 个字段。

in edge 为我工作

`autocomplete="false" readonly onfocus="this.removeAttribute('readonly');" /

`根据这个

这适用于 Edge & Chrome(不是登录表单,不确定是否有所不同)

autocomplete="somerandomstring"

https://gist.github.com/niksumeiko/360164708c3b326bd1c8#gistcomment-2367048