【问题标题】:The real 2019 solution to disable chrome autofill真正的 2019 年禁用 chrome 自动填充的解决方案
【发布时间】:2019-11-05 12:01:33
【问题描述】:

我知道这个问题有很多答案。我查看了所有禁用 google 自动完成(建议下拉菜单)的解决方案,例如使用 autocomplete=0ff 或 autocomplete=false,但没有解决问题。 我创建了一个 MVC 应用程序,该应用程序具有带有下拉列表和 HTML EditorFor 的视图。

一种为 HTML 编辑器添加名称的解决方案有助于删除自动完成功能,但是由于我更改了 HTML EditorFor 的名称,因此在回发该值时遇到了问题。

<div class="col-md-10">
     @Html.EditorFor(model => model.Address, new {htmlAttributes = new { @class = "form-control", @id = "show_address", Name = Guid.NewGuid().ToString(), autocomplete = "noped" } })
</div>

有没有人在 2019 年有解决方案来禁用谷歌自动完成功能?

更新:

我尝试使用 html.textboxfor(如下面的第一个解决方案中给出的),但是我意识到 autocomplete=off 仅在视图中有另一个 textboxfor 时才有效。 如果同一视图中有多个 textboxfor,则在任何 Html Textboxfor 上使用 autocomplete=off 都无法禁用自动完成功能!有人可以帮忙吗?

【问题讨论】:

    标签: html asp.net-mvc forms


    【解决方案1】:

    EditorFor 有自己的一些缺点,在某些场景下它不起作用,使用 TextBoxFor 代替 EditorFor 的更好方法。另外,它不影响 Postback 值。(详情check here

    @Html.TextBoxFor(model => model.Address, new { @class = "form-control",  @id = "show_address", autocomplete = "off" })
    

    更新:查看我更新的演示DEMO
    添加 autocomplete=off 后,仍然有一些浏览器会忽略它们并尝试向您显示一些提示或自动填充。更多信息check this
    在自动完成中添加一些 random_value,以便浏览器认为是关闭。

    @Html.TextBoxFor(model => model.Address1, new { @class = "form-control",  @id = "show_address", autocomplete = "some_random_value" })
    

    【讨论】:

      【解决方案2】:

      我想我已经找到了答案。我为这个解决方案感谢@Mangesh Ati。我只是想为其他感兴趣的人总结一下解决方案。

      autocomplete=off 可以在所有 @htmlTextBoxFor 上禁用谷歌自动建议,除了对于名为 address 的模型部分,改为使用 autocomplete=randomn_string

      重要: 如果您在 textboxfor.. 上使用 jquery 自动完成功能,请务必在 .focus 上添加 autocomplete=randomn_string 的属性,如下所示:

       $('#show_address').autocomplete({
      
                  }).focus(function () {
                       $(this).attr('autocomplete', 'some_random_value');
      
                  });
      

      【讨论】:

      • 谢谢!!为信用。终于,你找到了解决方案
      • 对我来说,autocomplete = "random" 在 TextBoxFor 级别上运行良好。如果您想在 FORM 级别应用它,那么有效的是 autocomplete = "off"。在 Chrome 79 中测试。
      【解决方案3】:

      你试过了吗?

      <%= Html.TextBoxFor(
          model => model.date, 
          new { @class = "aDatePicker", autocomplete = "off" }
      )%>
      

      它将生成接近以下内容的标记:

      <input type="text" id="date" name="date" class="aDatePicker" autocomplete="off" />
      

      你也可以试试:

      //Disable autocomplete throughout the site
      $(document).ready(function() {
          $("input:text,form").attr("autocomplete","off");
      })
      

      【讨论】:

      • 谢谢!上面的代码有效,但是当我对多个 textboxfor 使用上面的第一个解决方案时,在任何 textboxfor 中都没有禁用自动完成功能!你知道为什么吗?
      • 检查渲染代码,看看工作和不工作的渲染代码有什么区别!
      • 我尝试通过检查元素的呈现方式来检查差异,但是开发人员工具将输入显示为 autocomplete=off,即使尚未针对该输入禁用 google 自动完成。你能告诉我如何进一步检查或任何解决方案..?谢谢!
      【解决方案4】:

      在 VB 中这对我有用(使用 C# 转换器):

      @Html.EditorFor(Function(m) m.Password, New With {.class = "form-control text-center", .autocomplete = "new-password"})
      

      【讨论】:

        【解决方案5】:
        <input type="any" readonly onfocus="this.removeAttribute('readonly');">
        

        【讨论】:

          猜你喜欢
          • 2019-04-10
          • 2013-03-22
          • 2019-02-17
          • 1970-01-01
          相关资源
          最近更新 更多