如何在主要浏览器中禁用特定输入(或表单字段)的自动完成?


当前回答

有很多答案,但大多数都是破解或某种变通方法。

这里有三个案例。

案例一:如果这是你的标准登录表单。无论如何关闭它都可能是不好的。如果你真的需要这样做,请仔细考虑。用户习惯于浏览器记住和存储密码。在大多数情况下,你不应该改变这种标准行为。

如果你仍然想这样做,请参阅案例三

案例二:如果这不是您的常规登录表单,但输入的名称或id属性不是“像”电子邮件、登录名、用户名、用户名和密码。

Use

<input type="text" name="yoda" autocomplete="off">

案例三:如果这不是您的常规登录表单,但输入的名称或id属性是“类似”电子邮件、登录名、用户名、用户名和密码。

例如:登录,abc_login,密码,some_password,password_field。

所有浏览器都带有密码管理功能,可以记住密码或建议使用更强的密码。他们就是这样做的。

然而,假设你是一个网站的管理员,可以创建用户并设置他们的密码。在这种情况下,您不希望浏览器提供这些功能。

在这种情况下,autocomplete=“off”将不起作用。使用autocomplete=“新密码”

<input type="text" name="yoda" autocomplete="new-password">

有用链接:

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

其他回答

要禁用表单中文本的自动完成,请使用和元素的自动完成属性。您需要该属性的“off”值。

这可以在完整表单或特定元素中完成:

将autocomplete=“off”添加到元素以禁用整个表单的自动完成。为表单的特定元素添加autocomplete=“off”。

form

<form action="#" method="GET" autocomplete="off">
</form>

输入

<input type="text" name="Name" placeholder="First Name" autocomplete="off">

我使用此TextMode=“password”autocomplete=“new password”,并在aspx txtPassword.Attributes.Add(“value”,“”)中加载页面;

由于自动完成的行为在不同的浏览器和版本中几乎是不可预测的,所以我的方法是不同的。指定要禁用只读属性自动填充的所有输入元素,并仅在聚焦时禁用它。

  document.addEventListener('click', (e) => {
    readOnlys.forEach(readOnly => {
      if (e.target == readOnly) {
        readOnly.removeAttribute('readonly', '');
        readOnly.style.setProperty('pointer-events', 'none');
      } else {
        readOnly.setAttribute('readonly', '');
        readOnly.style.setProperty('pointer-events', 'auto');
      }
    });
  });
  document.addEventListener('keyup', (e) => {
    if (e.key == 'Tab') {
      readOnlys.forEach(readOnly => {
        if (e.target == readOnly) {
          readOnly.removeAttribute('readonly', '');
          readOnly.style.setProperty('pointer-events', 'none');
        } else {
          readOnly.setAttribute('readonly', '');
          readOnly.style.setProperty('pointer-events', 'auto');
        }
      });
    }
  });

如果您想确保用户在禁用JS的情况下仍然可以访问字段,那么可以在页面加载时通过JS设置所有只读。您仍然可以使用autocomplete属性作为回退。

这个问题只需要自动完成属性您可以访问此页面了解更多信息

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

Firefox 30忽略密码的autocomplete=“off”,而是选择提示用户密码是否应存储在客户端上。请注意2014年5月5日的以下评论:

密码管理器始终提示是否要保存密码。未经用户许可,密码不会保存。我们是继IE和Chrome之后第三个实现这一改变的浏览器。

根据Mozilla开发者网络文档,布尔表单元素属性autocomplete防止表单数据在旧浏览器中缓存。

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