【问题标题】:Disable input text suggestions in Edge?在 Edge 中禁用输入文本建议?
【发布时间】:2015-12-23 12:13:14
【问题描述】:

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

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

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

简要说明您的更改(更正拼写、修正语法、改进格式)

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

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

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

谢谢

【问题讨论】:

  • 您使用的是输入法吗?如果没有,您使用的是什么类型的元素?您是否正在尝试以任何可能的方式或使用 Angular.js 解决方案来解决此问题?
  • 一个沼泽标准文本输入,用于构建组件,如果您愿意,可以发布一些代码吗?
  • 也许,说实话,不确定什么是“沼泽”标准文本输入。我假设这是一个错字,而您只是在谈论常规文本输入。请发布代码,我会跟进。我假设,这是一个简单的“自动完成”设置解决方案。
  • 抱歉,这是爱尔兰口语,贴了一个例子
  • 这根本不是问题,我只是想澄清一下,以确保我给您提供准确的信息。该解决方案有效吗?如果是这样,您能否接受答案以关闭主题?

标签: html input microsoft-edge


【解决方案1】:

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

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

【讨论】:

  • 这不适用于任何现代浏览器。尝试使用诱饵场。 stackoverflow.com/a/2555771/317908
  • 在 Edge 中,如果您退格并删除输入内容,Edge 将显示自动完成框。所以虽然这个属性有帮助,但它并不能解决问题。
  • 我刚刚发现微软禁用了“autocomplete=off”属性。多么可怕的决定。 developer.microsoft.com/en-us/microsoft-edge/platform/issues/…
  • @Brain2000 - 这是适用于所有 Microsoft 浏览器还是略低于边缘?
  • @rockmandew Just Edge。 IE 11 仍然有效。我发现在某种程度上抑制在 Edge 上起作用,因为如果您进入输入并按退格键删除内容,自动完成仍然会出现。
【解决方案2】:

如果您在应用程序/站点范围内需要它,您可以使用 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);
            });

超时用于在应用 jquery 之前呈现 html。

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

【讨论】:

  • 如果每隔一段时间完成一次渲染需要 2001 毫秒怎么办?
【解决方案3】:

来自 Mozilla: 您可以在适用于整个表单的实际表单标记 &lt;form autocomplete='off' ... &gt;...&lt;/form&gt; 或单个 &lt;input type='text' /&gt; 标记上设置自动完成功能。

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

请阅读完整的Article 了解更多详细信息。

注意

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

【讨论】:

  • 在 Edge 中,它仅在放置在表单上时才有效,而不是单个元素,谢谢
【解决方案4】:

不幸的是,以上建议在最新的 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(和其他)忽略该字段。

【讨论】:

  • 这是最好的答案。
  • Edge Chromium 上,使用 list="autocompleteOff" ,因为 autocomplete="off" 无效。
  • Edge Chromium 很遗憾,我发现这不起作用。
【解决方案5】:

如果您想在使用 autocomplete="off" 时删除 chrome 中输入的自动完成功能,还必须删除 id,如果您不删除输入中的 id,自动完成功能将不起作用!

简单示例:

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

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

【讨论】:

    【解决方案6】:

    只需autocomplete="off" list="autocompleteOff" 输入您的意见并完成工作!

    【讨论】:

      【解决方案7】:
      <input type="text" autocomplete="new-password" />
      

      如果您要定义一个用户管理页面,其中用户可以为另一个人指定新密码,因此您希望防止自动填充密码字段,您可以使用 autocomplete="new-password"

      MDN reference

      它也适用于非密码字段。

      【讨论】:

        【解决方案8】:

        边缘对我有用

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

        `据此https://stackoverflow.com/a/30344707/14913109

        【讨论】:

          【解决方案9】:

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

          autocomplete="somerandomstring"
          

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

          【讨论】:

          • 它只有在您在同一台计算机上多次遇到相同的somerandomstring 时才有效。也许如果您使用当前时间戳作为自动完成......
          猜你喜欢
          • 2019-06-06
          • 2021-11-23
          • 1970-01-01
          • 2022-01-25
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 2020-11-09
          • 2011-09-21
          相关资源
          最近更新 更多