真正的2019解决方案禁用Chrome自动填充

时间:2019-06-23 12:07:18

标签: html asp.net-mvc forms

我知道这个问题有很多答案。我已经研究了所有禁用谷歌自动完成功能(建议的下拉菜单)的解决方案,例如使用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年的解决方案来禁用Google自动填充功能吗?

更新

我尝试使用html.textboxfor(如下面的第一个解决方案中所述),但是我已经意识到,只有在视图中还有另一个textboxfor时,autocomplete = off才起作用。 如果在同一视图中有多个textboxfor,则在其中任何一个HTML Textboxfor上使用autocomplete = off都不能使它们中的任何一个禁用自动填充!有人可以帮忙吗?

5 个答案:

答案 0 :(得分:1)

您尝试了吗?

<%= 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");
})

答案 1 :(得分:0)

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 :(得分:0)

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

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

答案 3 :(得分:0)

我想我找到了答案。我为这个解决方案赞扬@Mangesh Ati。我只想为其他感兴趣的人总结解决方案。

autocomplete = off可在所有 Box 上禁用所有@htmlTextBoxFor上的Google自动建议,而对于 address 模型的一部分,则改为使用autocomplete = randomn_string

重要: 如果要在文本框上使用jQuery自动完成功能,那么在.focus上添加autocomplete = randomn_string属性非常重要,如下所示:

 $('#show_address').autocomplete({

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

            });

答案 4 :(得分:0)

<input type="any" readonly onfocus="this.removeAttribute('readonly');">