25

有没有办法通过 HTML 或 JavaScript 在表单字段上禁用 Chrome 和其他浏览器的自动填充?我不希望浏览器自动填写以前浏览器用户的表单答案。

我知道我可以清除缓存,但我不能依赖反复清除缓存。

4

6 回答 6

31

您可以通过添加autocomplete="off"到输入来在 HTML 的输入级别执行此操作。

http://css-tricks.com/snippets/html/autocomplete-off/

你也可以通过 JS 来实现,例如:

someForm.setAttribute( "autocomplete", "off" ); 
someFormElm.setAttribute( "autocomplete", "off" );
于 2013-02-25T19:47:56.543 回答
9

事实上,自动完成关闭并不总是适用于较新的浏览器。例如,在 Chrome 中,如果设置了 autofill 属性,它会被忽略。见链接:http ://caniuse.com/#feat=input-autocomplete-onoff

于 2016-12-06T08:02:26.170 回答
4

jQuery一:

$(".indication-checkbox").attr("autocomplete", "off");
于 2013-05-16T16:02:04.760 回答
2

我遇到过同样的问题。想要坚持使用 HTML 解决方案(我不喜欢肮脏的 JS 变通办法)。唯一对我有用的是当我将输入的 ID 和/或名称更改为不常用的关键字时。

从这个 Laracast 线程中阅读 Talinon 的回答:

我曾经在文本字段上遇到过这个问题。无论我做什么,Chrome 都坚持自动填充/完成。我最终发现更改元素的 id/name 解决了这个问题。就像 Chrome 有一些它寻找的硬编码关键字并致力于自动填充它们。如果问题仍然存在,请尝试将 id/name 更改为不包含“title”或“address”等的内容。

长话短说:

<form>
    <input type="email" name="fem" />
    <input type="password" name="fpass" autocomplete="new-password" />
</form>

更长的故事(解释为什么这样做):禁用自动完成表单输入与 HTML

于 2021-03-20T07:55:04.387 回答
0

我正在使用 onfocus 和 onblur,如下所示:

<form>
  <p>Type something in both fields and hit submit button, then refresh this page and click on the first field. In chrome, you will get autocomplete on the first field, but if you select it it will populate only that first field!</p>
  <input type="text" name="first" placeholder="with autocomplete" /> <br/>
  <input type="text" name="second" placeholder="without autocomplete"
  readonly="readonly" 
  onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly');}"
  onblur="if (!this.hasAttribute('readonly')) {this.setAttribute('readonly','readonly')};"
  /><br/>
  <button type="submit">Send</button>
</form>

于 2021-11-17T20:52:18.553 回答
-1

您可以使用以下代码:

$(".TextID").attr("autocomplete", "off"); //disable input level 
于 2015-07-26T11:16:29.253 回答