【问题标题】:Chrome 48 input Autocomplete="off" HTML fix: put 'form autocomplete="off" ' inside an input element. Is this a legit fix?Chrome 48 input Autocomplete="off" HTML 修复:将 'form autocomplete="off" ' 放入输入元素中。这是一个合法的修复吗?
【发布时间】:2016-05-28 11:33:03
【问题描述】:

我不小心复制并粘贴了错误的东西,只是发现它有效。也就是说,我绝不是 HTML 专家,所以我不知道我的代码的后果是什么,比如如果我尝试选择元素的 innerHTML 或值会破坏什么。无论如何,这是我的策略:

<form name="mainForm" id="mainForm" class="mainForm">
    Email:<input type="email" name="emailBox" id="emailBox" class="userInput" placeholder="Enter email address" form autocomplete="off">

末尾的“form autocomplete="off" 似乎破坏了自动完成功能,但我不确定还会出现什么问题。请告诉我它是否适合您!或者您是否可以看到错误这种策略可能会导致...谢谢!

【问题讨论】:

  • 顺便说一下,&lt;input&gt; 元素有一个form attribute。但它的值“必须是同一文档中
    元素的 id”。
  • 天哪,@showdev 这就是我要找的东西!!!!首先,谢谢。其次,这如何解决自动完成问题?基本上,我正在制作一个每次提交时都需要不同的表单,并且永远无法回忆已经提交的信息。主要问题是,即使它没有完成表格的其余部分,它也会显示过去提交的选项。我在 Internet Exploder 上没有问题,只有 Chrome。没有在firefox上测试过。那么,知道为什么这会导致 Chrome 自动完成功能不起作用吗?我发现的所有其他解决方案都涉及 JS。
  • 显然问题在于,当 autocomplete="off" 时,自动填充正在填充数据,而不是自动完成。这就是我使用真实电子邮件测试 X 得到的结果|

标签: html google-chrome autocomplete autofill


【解决方案1】:

亲爱的,除非您希望将某些输入控件排除在验证之外,否则您无需将自动完成功能放在每个输入控件的前面。只需放入表单标签,您就可以完成工作。

  1. 表单标签中的autocomplete="off" 禁用表单标签内每个控件的自动完成
  2. 如果您希望仅对某些字段执行此操作,则将 autocomplete="off" 放入该输入控件并从表单标记中删除此 autocomplete="off"。
  3. 如果您将它与单个表单控件一起使用,而不是针对所有表单标签,那么您不必放置 form autocomplete="off"。像上面在代码中所做的那样,从 autocomplete="off" 前面删除 form 标记。
  4. 您的代码更正如下:

    <form name="mainForm" id="mainForm" class="mainForm" autocomplete="off">
    Email:<input type="email" name="emailBox" id="emailBox" class="userInput" placeholder="Enter email address">
    </form>
    
  5. 并始终关闭表单标签。

而且你仍然模棱两可,你想做什么或说什么。我无法理解。无论我理解什么,我都按照上面的方法进行了更正。

干杯:)

【讨论】:

  • 我知道这有点模棱两可,这只是一个不断出现的问题。我最初在表单标签中有“autocomplete =“off”,但在 Chrome 中它仍然保持自动完成。然后我尝试同时将它放在表单和输入标签中,然后只是输入标签。显然 Chrome 不喜欢尊重 autocomplete="off",至少根据我的研究(特别是这里 stackoverflow.com/questions/12374442/…)。我会在表单中再次尝试 autocomplete="off",也许互联网只是不喜欢我。
  • 另外,老实说,我的问题是:我将“form autocomplete="off"”放在输入标签的末尾会影响该输入的功能吗?
  • 参考点号。我回答的2和3你会得到解决方案
  • 显然您可以阻止 chrome 自动完成但不能将内容自动填充到它识别的字段中,这意味着我用我保存的地址对其进行测试使它看起来像是在自动完成但实际上是在使用自动填充,谷歌的工具可以让您保存数据。有趣的是,我也找到了打破自动填充的方法。谢谢!
【解决方案2】:

经过大量搜索,我为导航创建了以下解决方案,不尊重“自动完成=关闭”。

加载页面时,检查哪些元素为“autocomplete = off”,并为那些已经为“readonly”的元素和没有“readonly”属性的元素创建一个属性“default-readonly”添加它离开不可编辑的字段。 300 毫秒后(您可以多使用一点),脚本再次运行元素并删除没有此属性的元素的“只读”。 这允许带有“只读”导航的字段不填写该字段。在所有屏幕和浏览器执行它们的操作之后,它是从不应该有的“只读”字段中获取的。

$(document).ready(function () {
	$('[autocomplete="off"]').each(function (index, item) {
		var readonly = $(this).attr("readonly");
		if (typeof readonly !== "undefined") {
			if (readonly) {
				$(this).attr("default-readonly", "");
			} else {
				$(this).prop('readonly', true);
			}
		} else {
			$(this).prop('readonly', true);
		}
	});

	setTimeout(function () {
		$('[autocomplete="off"]').each(function (index, item) {
			var readonly = $(this).attr("readonly");
			var defaultReadonly = $(this).attr("default-readonly");
			if (typeof readonly !== "undefined") {
				if (typeof defaultReadonly === "undefined") {
					$(this).prop('readonly', false);
				}
			}
		});
	}, 300);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form method="POST">
  <input type="text" name="telefone" autocomplete="off"/>
  <input type="password" name="pwd" autocomplete="off"/>
</form>

我希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2014-11-07
    • 2019-04-11
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多