如何关闭 html 输入表单字段建议?

Posted

技术标签:

【中文标题】如何关闭 html 输入表单字段建议?【英文标题】:How to turn off html input form field suggestions? 【发布时间】:2017-08-25 06:05:42 【问题描述】:

我所说的建议是指当您开始输入时出现的下拉菜单,它的建议是基于您之前输入的内容:

例如,当我在标题字段中输入“a”时,它会给我很多建议,这很烦人。有人知道如何关闭它吗? 提前致谢。

【问题讨论】:

autocomplete="off" 它不起作用。我已经添加了它,当我开始输入建议时仍然会出现。 (它是 React) 你用在form标签还是input标签中? 如果你使用 chrome 阅读 this 我在表单标签中使用过。 【参考方案1】:

你想要的是禁用 html autocomplete 属性。

在这里设置 autocomplete="off" 有两个效果:

它会阻止浏览器保存字段数据以供以后自动完成 尽管启发式方法因浏览器而异,但在类似的形式上。它停止了 浏览器在会话历史记录中缓存表单数据。当表单数据是 缓存在会话历史中,用户填写的信息将 在用户提交表单并单击 返回按钮返回原始表单页面。

阅读更多MDN Network

下面是一个例子。

<form action="#" autocomplete="on">
  First name:<input type="text" name="fname"><br> 
  Last name: <input type="text" name="lname"><br> 
  E-mail: <input type="email" name="email" autocomplete="off"><br>
  <input type="submit">
</form>

如果它在 React 框架上,那么使用如下:

<input
    id=field.name
    className="form-control"
    type="text"
    placeholder=field.name
    autoComplete="off"
    ...fields/>

链接到react docs

更新

这是修复某些浏览器跳过“autocomplete=off”标志的更新。

<form action="#" autocomplete="off">
  First name: <input type="text" name="fname" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br> Last name: <input type="text" name="lname" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br> E-mail:
  <input type="email" name="email" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br>
  <input type="submit">
</form>

【讨论】:

此方法似乎不再有效。现在有其他解决方案吗? @webfacer,现在 google chrome 忽略了这个标志,一些密码管理应用也忽略了这个。但是,如果您有兴趣,这可以通过 javascript 实现。? 我知道,但我们决定不使用 JS,因为如果它被关闭了怎么办?这就是我们决定使用原生 html 的原因。嗯,由于安全问题,应该始终关闭自动完成功能。看到这个推特twitter.com/anttiviljami/status/816585860661518336 这些示例中的每一个仍在 Chrome 78 上为我显示自动建议。 autocomplete="off" 在 vue 项目中有效。谢谢!【参考方案2】:

在 Chrome 上,我们可以确定阻止所有表单填写的唯一方法是使用 autocomplete="new-password"。将此应用于任何不应该具有自动完成功能的输入,并且它将被强制执行(即使该字段与密码无关,例如 SomeStateId 填充状态表单值)。 See this link on the Chromium bugs discussion for more detail.

请注意,这只适用于基于 Chromium 的浏览器和 Safari - Firefox 没有针对此new-password (see this discussion for some detail) 的特殊处理程序。

更新: Firefox 即将加入! Nightly v68.0a1 和 Beta v67.0b5(2019 年 3 月 27 日)功能支持 new-password 自动完成属性,稳定版本将于 2019 年 5 月 14 日发布per the roadmap。

【讨论】:

【参考方案3】:

使用autocomplete="off"属性

引用:重要

把属性放在&lt;input&gt;元素上, &lt;form&gt; 元素上

【讨论】:

【参考方案4】:

我知道已经有一段时间了,但如果有人正在寻找答案,这可能会有所帮助。我在密码字段中使用了autocomplete="new-password"。它解决了我的问题。这是MDN documentation。

【讨论】:

这在 2021 年对我有用,autocomplete="off" 不适用于 chrome 自动保存的密码。例如,您有一个具有相同 ID 的“电子邮件”和“密码”的注册表单,并且您在登录窗口中保存了您的凭据,它在注册表单中提供了用户和密码,这个“新密码”解决了它。 【参考方案5】:

添加以下两个属性会关闭所有字段建议(在 Chrome v85、Firefox v80 和 Edge v44 上测试):

<input type="search" autocomplete="off">

【讨论】:

【参考方案6】:

autocomplete = "new-password" 对我不起作用。

我构建了一个 React 表单。 谷歌浏览器将根据名称属性自动完成表单输入。

 <input 
  className="scp-remark" 
  type="text" 
  name="remark"
  id='remark'
  value=this.state.remark 
  placeholder="Remark" 
  onChange=this.handleChange 
/>

它将基于“名称”属性来决定是否自动填写您的表单。在本例中,名称:“remark”。因此 Chrome 会根据我之前的所有“备注”输入自动填充。

<input 
  className="scp-remark" 
  type="text" 
  name=uuid() //disable Chrome autofill
  id='remark'
  value=this.state.remark 
  placeholder="Remark" 
  onChange=this.handleChange 
/>

所以,为了破解这个问题,我使用 uuid() 库给 name 一个随机值。

import uuid from 'react-uuid';

现在,自动完成下拉列表不会出现。 我使用 id 属性来识别表单输入,而不是 handleChange 事件处理程序中的 name

handleChange = (event) => 
    const id, value = event.target;
    this.setState(
        [id]: value,
    )

它对我有用。

【讨论】:

【参考方案7】:

我有类似的问题,但我最终还是这样做了

&lt;input id="inp1" autocomplete="off" maxlength="1" /&gt; IE。, autocomplete = 'off' 并且建议将消失。

【讨论】:

【参考方案8】:

我最终将输入字段更改为

<textarea style="resize:none;"></textarea>

你永远不会获得 textareas 的自动完成功能。

【讨论】:

移动时我更喜欢我的键盘根据输入来改变,即。 &lt;input type="email"/&gt;【参考方案9】:

如果你使用 ReactJS。然后将其设为 autoComplete="off"

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

【讨论】:

【参考方案10】:

&lt;input type="text" autocomplete="off"&gt; 实际上是正确的答案,尽管对我来说还不是很清楚。

根据MDN:

如果浏览器在设置后仍继续提出建议 自动完成关闭,然后您必须更改的名称属性 输入元素。

该属性确实会阻止将来保存数据,但不一定会清除现有保存的数据。因此,如果即使在将属性设置为 "off" 后仍然提出建议,则:

重命名输入 清除现有数据条目

此外,如果您在 React 上下文中工作,该属性自然会变为 autoComplete

干杯!

【讨论】:

以上是关于如何关闭 html 输入表单字段建议?的主要内容,如果未能解决你的问题,请参考以下文章

输入表单字段值时禁用 chrome 建议

谷歌自动完成 - 输入选择

如何在颤动中显示带有提交按钮和隐藏输入字段的html表单

单击添加新按钮并使用php-pdo将数据插入数据库时​​如何生成2个新输入字段[关闭]

如何在html表单中自动填充输入字段

如何发送远程表单参数