在 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"
它也适用于 non-password 个字段。
in edge 为我工作
`autocomplete="false" readonly onfocus="this.removeAttribute('readonly');" /
`根据这个
这适用于 Edge & Chrome(不是登录表单,不确定是否有所不同)
autocomplete="somerandomstring"
https://gist.github.com/niksumeiko/360164708c3b326bd1c8#gistcomment-2367048
我构建了一个文本框下拉列表 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"
它也适用于 non-password 个字段。
in edge 为我工作
`autocomplete="false" readonly onfocus="this.removeAttribute('readonly');" /
`根据这个
这适用于 Edge & Chrome(不是登录表单,不确定是否有所不同)
autocomplete="somerandomstring"
https://gist.github.com/niksumeiko/360164708c3b326bd1c8#gistcomment-2367048